【Android系列】—入门实例(Activity+Intent)

最后更新于:2022-04-01 10:02:04

### 实例功能和效果 >   在主界面输入两个乘数,点击Button按钮,跳到另一个界面并显示运算结果。   点击菜单按钮显示退出和关于的菜单,点击退出菜单,退出程序。 ![这里写图片描述](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-03-17_56ea50d0b8480.jpg "") ### 步骤 ### 准备 【1】新建Android Application Project 【2】新建2个Activity(MainActivity.java +Result.java) 【3】AndroidManifest.xml中配置Activity 【4】新建并编写布局文件(activity_main.xml+result.xml) ### 代码 【AndroidManifest.xml】 ~~~ <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.activitycontrols" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="21" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".Result" android:label="@string/result" > </activity> </application> </manifest> ~~~ 【activity_main.xml】 ~~~ <!--线性布局,且是垂直方向 android:orientation="vertical" --> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:android1="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" tools:context="com.example.activitycontrols.MainActivity" > <!--输入框输入第一个乘数 --> <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:text="@string/hello_world" /> <!--输入框输入第二个乘数 --> <EditText android:id="@+id/factorTwo" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <!--计算按钮 --> <Button android:id="@+id/calculate" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </LinearLayout> ~~~ 【result.xml】 ~~~ <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:android1="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" tools:context="com.example.activitycontrols.MainActivity" > <!--显示运算结果 --> <TextView android:id="@+id/result" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </LinearLayout> ~~~ 【strings.xml】 > 将控件中要显示的文本写到配置文件中,便于更改。 ~~~ <?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">ActivityControls</string> <string name="hello_world">Hello world!</string> <string name="action_settings">Settings</string> <string name="result">Result</string> <!--文本 --> <string name="symbol">乘以</string> <!--Button按钮的名称 --> <string name="calculate">计算</string> <!--菜单项的名称 --> <string name="exit">退出</string> <string name="about">关于</string> </resources> ~~~ 【MainActivity.java】 - 实现Button(计算)按钮的Click事件,并将数据传给Result.java - 在界面添加退出和关于的菜单项,当选中“退出”该菜单项时,程序退出。 ~~~ package com.example.activitycontrols; import android.content.Intent; import android.os.Bundle; import android.support.v7.app.ActionBarActivity; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; public class MainActivity extends ActionBarActivity { private EditText factorOne=null; private EditText factorTwo=null; private TextView symbol=null; private Button myButton=null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //设置该Activity的布局页面 setContentView(R.layout.activity_main); //获得控件 factorOne= (EditText)findViewById(R.id.factorOne); factorTwo=(EditText)findViewById(R.id.factorTwo); symbol=(TextView)findViewById(R.id.symbol); myButton=(Button)findViewById(R.id.calculate); //设置控件的值,写死到程序中 // symbol.setText("乘以"); // myButton.setText("计算"); //设置控件的值,写到strings。xml中 symbol.setText(R.string.symbol); myButton.setText(R.string.calculate); //将监听器的对象绑定到按钮对象上面 myButton.setOnClickListener(new CalculateListener()); } //当客户点击Menu按钮的时候,调用该方法,Menu不用在布局页中写 @Override public boolean onCreateOptionsMenu(Menu menu) { //添加啊菜单项 menu.add(0,1,1,R.string.exit); menu.add(0,2,2,R.string.about); return super.onCreateOptionsMenu(menu); } //当客户点击菜单当中的某一个选项时,会调用该方法 @Override public boolean onOptionsItemSelected(MenuItem item) { //当单击第一项(退出)时,退出程序 if(item.getItemId()==1){ finish(); } return super.onOptionsItemSelected(item); } //设置Button按钮的监听器 class CalculateListener implements OnClickListener{ @Override public void onClick(View v) { //取得两个EditText控件的值 String factorOneStr=factorOne.getText().toString(); String factorTwoStr=factorTwo.getText().toString(); //将两个值存放到Intent对象当中 Intent intent=new Intent(); intent.putExtra("one", factorOneStr); intent.putExtra("two", factorTwoStr); intent.setClass(MainActivity.this,Result.class); //使用这个Intent对象来启动Result MainActivity.this.startActivity(intent); //使用这个Intent对象来启动ResultActivity } } } ~~~ 【Result.java】 - 接收MainActivity传来的数据,并计算,将结果显示到界面上 ~~~ package com.example.activitycontrols; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.widget.TextView; public class Result extends Activity { private TextView resultView=null; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.result); //1.获得界面上的控件 resultView=(TextView)findViewById(R.id.result); //2.得到Intent对象当中的值 Intent intent=getIntent(); //3.根据键来取值 String factorOne=intent.getStringExtra("one"); String factorTwo=intent.getStringExtra("two"); //4.转化成数值 int intFactorOne=Integer.parseInt(factorOne); int intFactorTwo=Integer.parseInt(factorTwo); //计算两个值的积 int result=intFactorOne*intFactorTwo; //将值显示出来,result是整型,当它连接一个字符串时也会被转变为字符串 resultView.setText(result+""); } } ~~~ ### 总结 【1】设置Activity的布局 ~~~ setContentView(R.layout.result); ~~~ 【2】获取控件及控件属性、设置控件属性 ~~~ resultView=(TextView)findViewById(R.id.result); symbol.setText("乘以"); symbol.setText(R.string.symbol); String factorOneStr=factorOne.getText().toString(); ~~~ 【3】创建菜单和选中菜单项 ~~~ public boolean onCreateOptionsMenu(Menu menu) { //添加啊菜单项 menu.add(0,1,1,R.string.exit); menu.add(0,2,2,R.string.about); return super.onCreateOptionsMenu(menu); } public boolean onOptionsItemSelected(MenuItem item) { //当单击第一项(退出)时,退出程序 if(item.getItemId()==1){ finish(); } return super.onOptionsItemSelected(item); } ~~~ 【4】Intent的使用 ~~~ //将两个值存放到Intent对象当中 Intent intent=new Intent(); //键值对的形式 intent.putExtra("one", factorOneStr); intent.putExtra("two", factorTwoStr); //设置intent传递方向:从MainActivity到Result intent.setClass(MainActivity.this,Result.class); //使用这个Intent对象来启动Result MainActivity.this.startActivity(intent); //2.得到Intent对象当中的值 Intent intent=getIntent(); //3.根据键来取值 String factorOne=intent.getStringExtra("one"); String factorTwo=intent.getStringExtra("two"); ~~~
';