Intent返回数据给上一个活动

1.新建项目<IntentputExtra>
2.在layout目录下,在first_layout.xml中添加按钮Button1
3.在layout目录下,新建second_layout.xml,并添加按钮Button2
4.在Java目录下,在MainActivity.java中,加载布局,使用startActivityForResult方法,数据可以返回给上一个活动
修改主活动的方法onCreate
5.在Java目录下,新建SecondActivity.java,并加载布局,  当传递到活动MyActivity2中,修改其onCreate方法
6.在AndroidManifest.xml下,注册2个活动,并将MainActivity作为主活动
代码如下:
layout——>activity_main.xml(2)
<Button
    android:id="@+id/button1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="myButton1" />
layout——>second_layout.xml(3)
<Button
    android:id="@+id/button2"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="myButton2" />
java——>MainActivity .java(4)
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_main);

        Button button1=(Button)findViewById(R.id.button1);
        button1.setOnClickListener(new View.OnClickListener() {

            public void onClick(View view) {
//              //——下面返回数据给上一个活动
                //跳转到活动MyActivity2
                //第一个参数:上下文,第二个参数:目标活动类
                Intent intent = new Intent(MainActivity.this,SecondActivity.class)//显式Intent
                //向活动MyActivity2传递数据
                intent.putExtra("info""我来自活动1");
                //启动活动
                startActivityForResult(intent0);
            }
        });
    }
    /**
     * 接受活动返回的数据,该方法对应于startActivityForResult(intent, 0)方法,请求码只要是唯一值就好,这里传入了0
     * requestCode:请求码
     * resultCode:返回数据时的处理结果
     * data:返回数据的Intent
     */
    protected void onActivityResult(int requestCode, int resultCodeIntent data) {
        //进行判断
        if(== requestCode && resultCode == RESULT_OK){
            //获取数据
            String feedBack = data.getStringExtra("feedBack");
            Toast.makeText(getApplicationContext()feedBackToast.LENGTH_SHORT).show();
        }
    }
}
java——>SecondActivity .java(5)
public class SecondActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //隐藏标题栏
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        //加载自定义布局文件 activity2_my.xml
        setContentView(R.layout.second_layout);

        //接受活动1传递来的数据
        Intent intent = getIntent();
        String info = intent.getStringExtra("info");
        //即获取主活动传递来的数据,使用Toast显示
        Toast.makeText(getApplicationContext()infoToast.LENGTH_SHORT).show();


        //——为Button2添加点击监听事件:创建一个Intent,回传数据给主活动,同时销毁当前活动。使用setResult方法回传数据。
        Button button2 = (Button) findViewById(R.id.button2);
        //为Button2添加点击监听事件
        button2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //构建一个Intent 返还数据,创建一个Intent,回传数据给主活动,同时销毁当前活动。使用setResult方法回传数据。
                Intent intent2 = new Intent();
                intent2.putExtra("feedBack""我来自活动2,我已经收到了你的信息,这是我给你的反馈!");
                setResult(RESULT_OKintent2)//返还数据
                finish();//销毁当前活动
            }
        });
    }
      //需要注意的是,用户按下back时也可以返回,因此在活动MyActivity2中还需要重写onBackPressed方法
      public void onBackPressed() {
        //构建一个Intent 返还数据
        Intent intent2 = new Intent();
        intent2.putExtra("feedBack""我来自活动2,我已经收到了你的信息,这是我给你的反馈!");
        setResult(RESULT_OKintent2)//返还数据
        finish();//销毁当前活动
    }

}
manifests——> AndroidManifest.xml(6)  
<activity android:name="com.administrator.intentputextra.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="com.administrator.intentputextra.SecondActivity"></activity>

结果如下:点击button2或返回键的时候会返回到button1,并提示……










發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章