广

android开发

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

    android startActivityForResult的使用方法介绍

    2018-04-08 09:04:28 次阅读 稿源:互联网
    广告

    Activity 跳转 都知道用startActivity(Intent)
    但是如果下面情况呢?
    Activity1 跳转到 Activity2  但是还需要在Activity2 再回到 Activity1呢? 可能有人说: 那我在Activity2  再使用 startActivity() 不就可以了 是的 但是 startActivityForResult() 能够直接完成这项工作
    [示例]
    Activity1: 有2个EditText 用于接收用户输入的2个字符串 要求把这2个字符串连接起来 我现在把连接的工作交给 Activity2 来做 并且把连接好后的字符串再返回给 Activity1 并由它负责显示
    [代码]
    1. 构建 Activity1 所需的界面
    Java代码
    代码如下:

    <?xml version="1.0" encoding="utf-8"?>  
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
        android:orientation="vertical" 
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent" 
        >  
    <EditText    
        android:id="@+id/first" 
        android:layout_width="fill_parent"   
        android:layout_height="wrap_content"   
        />  
    <EditText    
        android:id="@+id/second" 
        android:layout_width="fill_parent"   
        android:layout_height="wrap_content"   
        />  
    <Button    
        android:id="@+id/start" 
        android:layout_width="fill_parent"   
        android:layout_height="wrap_content"   
        android:text="start" 
        />  
    <TextView    
        android:id="@+id/text" 
        android:layout_width="fill_parent"   
        android:layout_height="wrap_content"   
        android:text="...is waiting" 
        />  
    </LinearLayout> 


    2. 得到2个EditText的用户输入

    代码如下:

    first = (EditText) findViewById(R.id.first);  
            second = (EditText) findViewById(R.id.second); 


    3. 把字符串装入Bundle 再放置于Intent 然后发送之

    代码如下:

    Intent i = new Intent(this, Activity2.class);  

            Bundle b = new Bundle();  

            b.putString("first", first.getText().toString());  
            b.putString("second", second.getText().toString());  

            i.putExtras(b);  

            startActivityForResult(i,10); 

    补充:

    代码如下:

    public void startActivityForResult (Intent intent, int requestCode)   

    Intent intent:系统会根据这个确定目的Activity  

    int requestCode:用于标识该Intent 回来后确定是不是想要的返回 


    4. 注册View监听器

    代码如下:

    findViewById(R.id.start).setOnClickListener(new OnClickListener(){  
                public void onClick(View v) {  
                    // TODO Auto-generated method stub  
                    sendCalculate();  
                }  
            }); 


    5. 构建 Activity2 的界面 把处理的结果返回

    代码如下:

    <?xml version="1.0" encoding="utf-8"?>  
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
        android:orientation="vertical" 
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent" 
        >  
    <Button    
        android:id="@+id/reply" 
        android:layout_width="fill_parent"   
        android:layout_height="wrap_content"   
        android:text="reply" 
        />  
    </LinearLayout> 


    6. 得到传入的Intent 以及传过来的2个字符串 并连接之

    代码如下:

    Intent i = this.getIntent();  

            Bundle b = i.getExtras();  

            String v1 = b.getString("first");  
            String v2 = b.getString("second");  

            value = v1 + v2; 


    7. 定义Intent 并存放返回结果 并返回之

    代码如下:

    Intent i = new Intent();  

            Bundle b = new Bundle();  
            b.putString("CALCULATION", value);  

            i.putExtras(b);  

            this.setResult(RESULT_OK, i);  
            this.finish(); 


    8. 事情完成了么? 当然没有 别忘了 Activity1 还要接收数据并显示之

    代码如下:

    protected void onActivityResult(int requestCode, int resultCode,  
                                        Intent data){  
            switch (resultCode){  
            case RESULT_OK:  
                Bundle b = data.getExtras();  

                String string = b.getString("CALCULATION");  

                updateText(string);  
            }  
        } 

    一起学吧部分文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与一起学吧进行文章共享合作。

    广告
    广告
    广告