• 0106 常用控件(一)+Intent+简单乘法计算器


    TextView 在Activity中显示文本信息

    EditText 可编辑文本框

    Menu菜单控件

    Button 按钮

     记得每一个控件都要有id

    ----------------------------------------

    <EditText

        android:id="@+id/factorOne"

        android:layout_width="fill_parent"

            android:layout_height="wrap_content"

            /> //输入的第一个乘数

       

        <TextView

            android:id="@+id/symbol"

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:layout_centerHorizontal="true"

            android:layout_centerVertical="true"

            android:text="@string/hello_world" />

        //符号

    <EditText

        android:id="@+id/factorTwo"

        android:layout_width="fill_parent"

            android:layout_height="wrap_content"

            />//输入的第二个乘数

    --------------------------------------------

    在layout中布局好控件后在Activity中要将四个控件取出

    symbol.setText("乘以");

    calculate.setText("计算");

    设置要显示的值,但是这种方法显示语言会写死,不适合国际化平台

    android中的strings.xml

    <string name ="symbol">乘以</string>

    <string name ="calculate">计算</string>

    在Activity控件中可以这么写以显示

    symbol.setText(R.string.symbol);

    calculate.setText(R.string.calculate);真正的值在strings.xml这个文件中

    可以在android平台上放上不同语言的 strings.xml 比如日文或者英文版本的strings.xml

    所以推荐把字符窜放在strings.xml中

    《关于内部类》-监听器

    内部类可以直接使用外部类的成员变量

    可以使用外部类的成员函数

    也可以调用外部类的对象

    ------------------------------------------

    String factorOneStr=factorOne.getText().toString();

                                String factorTwoStr=factorTwo.getText().toString();

                                //将这两个值存放到Intent对象中

                                Intent intent=new Intent();

                                intent.putExtra("one",factorOneStr );//作为键值对放入 第一个键叫做one,他的值是factorOneStr

                                intent.putExtra("two", factorTwoStr);

                                intent.setClass(Activity03.this, ResultActivity.class);//设置intent启动哪一个Activity

                Activity03.this.startActivity(intent);//这样就可以启动ResultActivity了

    ---------------------------------------------------

    添加Menu菜单

    复写onCreateOptionsMenu

    是一个回调函数

    当在手机上点击Menu是就会执行这个函数

    只要操作menu对象即可

    menu.add(组的名字,ItemId,排序,按钮上显示的内容)

    要实现按钮动作要复写

    onOptionsItemSelected(MenuItem)这个函数

     从Menu里按出来的一整个叫做Menu,其中的每一个选项叫做MenuItem

    当点击其中的MenuItem时候就会执行onOptionsItem这个函数,

    并且把点击的Item传进去

    但如何知道点击的是哪一个按钮呢,可以使用

    --------------------------------------------------------------

    if(item.getItemId()==1)//menu.add()中的第二个参数是ItemId

    finish();

    -----------------------------------------------------------

    和之前不同的是,之前需要在布局文件中进行配置

    儿Menu不需要

    只要复写onCreateOptions 方法

     ---------------------------------------------------------------

    Activity03

     1 package com.example.mars_activity03;
     2 
     3 
     4 import android.os.Bundle;
     5 import android.app.Activity;
     6 import android.content.Intent;
     7 import android.view.Menu;
     8 import android.view.MenuItem;
     9 import android.view.View;
    10 import android.view.View.OnClickListener;
    11 import android.widget.Button;
    12 import android.widget.EditText;
    13 import android.widget.TextView;
    14 
    15 public class Activity03 extends Activity {
    16 //在Activity中声明四个控件
    17 //要为其中两个控件设置显示的值
    18 //创建一个监听器类,监听按钮按下的动作
    19 //将监听器类的对象绑定在按钮上
    20     private EditText factorOne;
    21     private EditText factorTwo;
    22     private TextView symbol;
    23     private Button calculate;
    24     
    25     @Override
    26     protected void onCreate(Bundle savedInstanceState) {
    27         super.onCreate(savedInstanceState);
    28         setContentView(R.layout.main_acitivity03);
    29         //根据控件的ID来取得代表控件的对象
    30         factorOne= (EditText)findViewById(R.id.factorOne);
    31         factorTwo=(EditText)findViewById(R.id.factorTwo);
    32         symbol=(TextView)findViewById(R.id.symbol);
    33         calculate=(Button)findViewById(R.id.calculate);
    34         //为symbol和calculate设置显示的值
    35         symbol.setText("乘以");
    36         calculate.setText("计算");
    37         
    38         //将监听器绑定在calculate这个对象上
    39         calculate.setOnClickListener(new CalculateListener());
    40         //当按动这个按钮就会取得那两个值并且启动 ResultActivity
    41         
    42     }
    43     
    44 
    45     @Override
    46     public boolean onCreateOptionsMenu(Menu menu) {
    47         // Inflate the menu; this adds items to the action bar if it is present.
    48         getMenuInflater().inflate(R.menu.activity_activity03, menu);
    49         menu.add(0, 1, 1,R.string.exit );
    50         menu.add(0, 2, 2, R.string.about);
    51         
    52         return true;
    53     }//当客户点击Menu菜单时候调用该方法
    54     
    55     @Override
    56     public boolean onOptionsItemSelected(MenuItem item) {
    57         // TODO Auto-generated method stub
    58         if(item.getItemId()==1)//menu.add()中的第二个参数是ItemId
    59         finish();//编号为1执行第一个exist
    60             
    61         return super.onOptionsItemSelected(item);
    62     }//当客户点击Menu菜单的某一项时即Menu中的MenuItem,会调用该方法,点击不同的Item就会传人不同的参数
    63 
    64     class CalculateListener implements OnClickListener
    65     {
    66 
    67         @Override
    68         public void onClick(View v) {
    69             // TODO Auto-generated method stub
    70             // 取得两个EditText的值
    71             String factorOneStr=factorOne.getText().toString();
    72             String factorTwoStr=factorTwo.getText().toString();
    73             //将这两个值存放到Intent对象中
    74             Intent intent=new Intent();
    75             intent.putExtra("one",factorOneStr );//作为键值对放入 第一个键叫做one,他的值是factorOneStr
    76             intent.putExtra("two", factorTwoStr);
    77             intent.setClass(Activity03.this, ResultActivity.class);//设置intent启动哪一个Activity
    78             Activity03.this.startActivity(intent);//这样就可以启动ResultActivity了
    79             //使用这个Intent对象来启动ResualtActivity
    80             
    81             
    82         }
    83 
    84 }
    85 }

    ResultActivity.java

     1 package com.example.mars_activity03;
     2 
     3 
     4 import android.app.Activity;
     5 import android.content.Intent;
     6 import android.os.Bundle;
     7 import android.widget.TextView;
     8 
     9 //接受Activity03传递的两个乘数的值
    10 //计算两个值的积
    11 //讲计算的结果显示在Activity上 
    12 //既然要显示就要在Activity的布局文件中加一个TextView
    13 public class ResultActivity extends Activity{
    14     private TextView resultView;
    15 
    16     @Override
    17     protected void onCreate(Bundle savedInstanceState) {
    18         // TODO Auto-generated method stub
    19         super.onCreate(savedInstanceState);
    20         setContentView(R.layout.resualt);
    21         resultView = (TextView)findViewById(R.id.resualt);//写在onCreate里面
    22         //得到Intent对象的值
    23         Intent intent=getIntent();//先把Intent对象得到 然后取值
    24         String factorOneStr=intent.getStringExtra("one");//那边传的键值是one
    25         String factorTwoStr=intent.getStringExtra("two");//两个不同的类所以factorOneStr相同没事
    26         //因为输入的是字符窜是不能计算的,因此要把它们转换成整形
    27         int factorOneInt=Integer.parseInt(factorOneStr);
    28         int factorTwoInt=Integer.parseInt(factorTwoStr);
    29         //值抽取出来开始计算结果
    30         int result=factorOneInt*factorTwoInt;
    31         //  在resultView中把这个积显示出来
    32         resultView.setText(result+"");
    33         
    34         
    35         
    36     }
    37     
    38 
    39 
    40 }

    main.xml

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     3     android:layout_width="match_parent"
     4     android:layout_height="match_parent"
     5     android:orientation="vertical" >
     6     
     7 <EditText 
     8     android:inputType="none"
     9     
    10     android:id="@+id/factorOne"
    11     android:layout_width="fill_parent"
    12     android:layout_height="wrap_content"
    13        />
    14 <TextView
    15         android:id="@+id/symbol"
    16         android:layout_width="fill_parent"
    17         android:layout_height="wrap_content"
    18         />
    19 
    20 
    21 
    22 <EditText
    23     android:inputType="none"
    24     android:id="@+id/factorTwo"
    25     android:layout_width="fill_parent"
    26     android:layout_height="wrap_content"
    27   />
    28 
    29 <Button
    30     android:id="@+id/calculate"
    31     android:layout_width="fill_parent"
    32     android:layout_height="wrap_content" />
    33      
    34 
    35 </LinearLayout>

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     3     android:layout_width="match_parent"
     4     android:layout_height="match_parent" >
     5     <TextView
     6         android:id="@+id/resualt"
     7         android:layout_width="fill_parent"
     8         android:layout_height="wrap_content" />
     9 
    10 </RelativeLayout>


    AndroidManifest.xml

    1 <activity 
    2             android:name="com.example.mars_activity03.ResultActivity"
    3             android:label="@string/result"
    4             />
  • 相关阅读:
    python中的函数编程
    Python中的类型关系和继承关系
    MySQLdb for Python使用指南
    调试模式
    js window.open打开新页面
    JVM调优
    jacoco(spring boot启动) agent tcpserver使用方案
    C#多线程之ManualResetEvent和AutoResetEvent
    下载verycd的方法下载电驴资源隐藏资源的最新可用方法
    C# 多线程之信号量Semaphore
  • 原文地址:https://www.cnblogs.com/kyxyes/p/2883716.html
Copyright © 2020-2023  润新知