【问题标题】:How to transfer data in the previous activity by using the back button in the action bar?如何使用操作栏中的后退按钮传输上一个活动中的数据?
【发布时间】:2016-05-02 14:56:32
【问题描述】:

我在清单文件中写了一个后退按钮(比如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时如何从Activity 2传输数据?或者有更好的方法在操作栏中制作返回按钮?

【问题讨论】:

  • 共享首选项?辛格尔顿?方法很多。
  • 好吧,你也可以带着意图启动父 Activity 并将数据放入 extras 中。检查可用标志,以便活动以正确的模式启动。

标签: android


【解决方案1】:

首先,使用Activity.startActivityForResult()MainActivity 调用Activity2

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

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

查看此链接Starting Activities and Getting Results | Activity | Android Developers

【讨论】:

    【解决方案2】:

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

    参考这里:http://developer.android.com/training/basics/intents/result.html

    【讨论】:

      【解决方案3】:

      MainActivity 开始,您可以使用startActivityForResult() 启动Activity2 - 然后在第二个活动中,您可以设置当用户单击后退按钮时要发送回MainActivity 的结果。你可以这样做:

      Intent resultIntent = new Intent();
      returnIntent.putExtra("result",result);
      setResult(Activity.RESULT_OK,resultIntent );
      

      或者,您可以在Activity2 中覆盖getParentActivityIntent ()(或getSupportParentActivityIntent(),如果使用支持库),例如:

      @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;
      }
      

      您可以查看所选答案here,并探索一些选项here

      【讨论】:

      • 当用户点击后退按钮时如何跟踪?
      • 您可以像这样覆盖onBackPressed 方法@Override public void onBackPressed() { // user clicked back button? Do something here (but do not change the expected behavior as that might confuse the user... }
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-12
      • 2014-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-12
      相关资源
      最近更新 更多