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             />
原文地址:https://www.cnblogs.com/kyxyes/p/2883716.html