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 />