Android 创建简单交互页面

时间:2014-10-26 06:44:16   收藏:0   阅读:439

1. Activity 主要关注与视图窗体的创建(目前理解为网站的网页)。它具有生命周期的概念,onCreate,OnStart,OnRestart, OnResume,OnPause,OnStop,OnDestroy。随着 Activity 对用户的可见和不可见状态转变,onStart()和onStop()能被调用多次。

2. 配置改变:除非指定,否则如果设备的配置改变(定义在Resource.Configuration类中),任何在界面上的显示都需要更新以适应新的配置(屏幕方向、语言、输入设备)。默认销毁 Activity,并调用相应的 Activity 生命周期函数 onPause,onStop,onDestroy。如果希望绕过 Activity的重启来应对配置改变,则可在manifest文件中配置 android:configChanges 属性。任何在manifest中定义的配置类型,都会回调当前Activity的onConfigurationChanged(Configuration)方法,而不是重启Activity。

3. 启动Activity并得到结果:在Activity中,可以调用 startActivity(Intent)/startActivityForResult(Intent,int)[结果通过onActivityResult(int,int,Intent)拿到【在被调用方使用 setResult(Activity.RESULT_OK,data) ;//data.putExtra("huan", val); 传递给调用方】拿到Intent数据data后使用]方法来启用一个新的 Activity。


bubuko.com,布布扣android.content.Intent.Intent(Context packageContext, Class<?> cls)

Create an intent for a specific component. All other fields (action, data, type, class) are null, though they can be modified later with explicit calls. This provides a convenient way to create an intent that is intended to execute a hard-coded class name, rather than relying on the system to find an appropriate class for you; see setComponent for more information on the repercussions of this.

Parameters:
packageContext A Context of the application package implementing this class.
cls The component class that is to be used for the intent.

 

例如:

1         mButton2.setOnClickListener(new OnClickListener(){
2          @Override
3          public void onClick(View v)
4          {
5           Intent _intent = new Intent(MainActivity.this, ActivityC.class);
6           startActivityForResult(_intent,100);
7           //第一个是intent对象,第二个是请求码,用来区分不同的请求
8          }
9         });
 1 public class ActivityC extends Activity {
 2     protected void onCreate(Bundle savedInstanceState) {
 3         super.onCreate(savedInstanceState);
 4         setContentView(R.layout.activityc);
 5         
 6         Button button1 = (Button) findViewById(R.id.buttionc);
 7         
 8         button1.setOnClickListener(new OnClickListener(){
 9             @Override
10             public void onClick(View v){
11                 Intent data = new Intent(); //可见,Intent有多种构造方式,既可以.putExtra 传递<key,value>值,也可以作为启动新的 Activity 的桥梁。
12                 EditText et = (EditText) findViewById(R.id.textActivityc);
13                 String val = et.getText().toString();
14                 data.putExtra("huan", val);
15                 setResult(Activity.RESULT_OK,data);
16                 finish();
17             }
18         });   
19     }
20 }

4. 需要注意的是,启动不同Activity时候,需要对 requestCode进行各自的设定,这样在onActivityResult()才能拿到不同 Intent的内容,从而选取本页View做不同的处理。


 

void android.app.Activity.startActivityForResult(Intent intent, int requestCode) Same as calling startActivityForResult(Intent, int, Bundle) with no options.

Parameters:
intent The intent to start.
requestCode If >= 0, this code will be returned in onActivityResult() when the activity exits.

1         mButton1.setOnClickListener(new OnClickListener(){
2          @Override
3          public void onClick(View v)
4          {
5           Intent _intent = new Intent(MainActivity.this,ActivityB.class);
6           startActivityForResult(_intent,200);
7          }
8         });

 

 1     @Override
 2     protected void onActivityResult(int requestCode, int resultCode,Intent data){
 3         super.onActivityResult(requestCode, resultCode, data);
 4         if(requestCode == 100 && resultCode == Activity.RESULT_OK){
 5             String val = data.getExtras().getString("huan");
 6             TextView tv = (TextView) findViewById(R.id.tvDisplay);
 7             tv.setText("来自 ActitivityC 的值 :" + val);
 8         }
 9         if(requestCode == 200 && resultCode == Activity.RESULT_OK){
10             String val = data.getExtras().getString("xin");
11             TextView tv = (TextView) findViewById(R.id.tvDisplay);
12             tv.setText("来自 ActitivityB 的值 :" + val);
13         }
14         /*
15          * 本页面上拿到的 ActivityResult,不管是自哪个button跳转的,都需要根据各自新 Activity的requestCode来进行判断。
16          * 并没有区分不同Activity的同样的requestCode。
17          */
18         
19     }

 bubuko.com,布布扣

5. 所有的 Activity 都必须在 Androidmanifest.xml 文件中进行注册:<activity android:name=".ActivityC" />

 

原文:http://www.cnblogs.com/autumn917/p/4051307.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!