如何使用操作栏中的后退按钮传输上一个活动中的数据?

时间:2016-05-02 14:56:33

标签: android

我在清单文件中写了一个后退按钮(就像那里http://developer.android.com/training/implementing-navigation/ancestral.html

<activity android:name=".Activity2"
        android:parentActivityName=".MainActivity">
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value=".MainActivity"
            />

    </activity>

如何在返回MainActivity时从活动2传输数据?还是有更好的方法在操作栏中制作后退按钮?

3 个答案:

答案 0 :(得分:1)

首先,使用Activity2MainActivity调用Activity.startActivityForResult()

Activity2中,一旦用户完成了设置所需数据的操作,请致电Activity.setResult()。您可以将resultCode设置为RESULT_OK,并在此处传递Intent,其中包含您要返回的Parcelable数据。

最后,您将覆盖Activity.onActivityResult()中的MainActivity。这将在Activity2完成时调用。在这里,您将收到RESULT_OK的resultCode,您可以访问Intent设置的Activity2

请参阅此链接Starting Activities and Getting Results | Activity | Android Developers

答案 1 :(得分:0)

正确的方法是使用startActivityForResult()启动SecondActivity并使用onActivityResult()从SecondActivity接收数据到FirstActivity。

请参阅此处:http://developer.android.com/training/basics/intents/result.html

答案 2 :(得分:0)

MainActivity,您可以使用Activity2启动startActivityForResult() - 然后在第二个活动中,您可以设置您希望在MainActivity时发送回Intent resultIntent = new Intent(); returnIntent.putExtra("result",result); setResult(Activity.RESULT_OK,resultIntent ); 的结果。用户单击后退按钮。你做了类似的事情:

getParentActivityIntent ()

或者,您可以在getSupportParentActivityIntent()中覆盖Activity2(或@Override public Intent getParentActivityIntent () { Intent intent = super.getParentActivityIntent(); //here you put the data that you want to send back - could be Serializable/Parcelable, etc intent.putExtra("result",result); return intent; } ,如果使用支持库),例如:

Proguard

您可以查看选定的答案here,并浏览一些选项here