使用操作栏发送数据 [Android]
Posted
技术标签:
【中文标题】使用操作栏发送数据 [Android]【英文标题】:Sending data using the action bar [Android] 【发布时间】:2016-05-31 16:16:03 【问题描述】:我希望能够使用返回按钮或操作栏主页按钮将数据从活动 2 发送回活动 1。
这是我在 Activity 2 中设置后退按钮的方式:
@Override public void onBackPressed()
String[] userArray = getIntent().getExtras().getStringArray("userArray");
Log.d("Returning user data:", Arrays.toString(userArray));
Intent intent = new Intent();
intent.putExtra("userArray", userArray);
setResult(RESULT_OK, intent);
finish();
这是我在活动 1 中收到它的方式:
@Override public void onActivityResult(int requestCode, int resultCode, Intent data)
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1)
if(resultCode == getActivity().RESULT_OK)
String[] userArray = data.getExtras().getStringArray("userArray");
Log.d("Retained user data:", Arrays.toString(userArray));
这是我尝试在活动 2 中设置家庭选择的方法:
@Override
public boolean onOptionsItemSelected(MenuItem item)
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings)
return true;
if (id == android.R.id.home)
Toast.makeText(getApplicationContext(), "Saving User Info", Toast.LENGTH_SHORT).show();
super.onBackPressed();
return super.onOptionsItemSelected(item);
奇怪的是 - toast 有效,但调用 onbackpressed 函数无效。有什么建议吗?
【问题讨论】:
【参考方案1】:试试这个 你错过了 return true;
if (id == android.R.id.home)
Toast.makeText(getApplicationContext(), "Saving User Info", Toast.LENGTH_SHORT).show();
String[] userArray = getIntent().getExtras().getStringArray("userArray");
Log.d("Returning user data:", Arrays.toString(userArray));
Intent intent = new Intent();
intent.putExtra("userArray", userArray);
setResult(RESULT_OK, intent);
finish();
return true;
【讨论】:
太棒了,谢谢!没有意识到解决方案有多简单:P【参考方案2】:不要打电话给super.onBackPressed()
。在您的 onOptionsItemSelected(...) 方法中简单地调用 onBackPressed()
。通过您当前的调用,您显式调用了超类的实现。
【讨论】:
啊,我应该提一下,那行不通。也不会将代码从 onBackPressed 复制到 onOptionsItemSelected【参考方案3】:我能知道您如何在 Activity1 类中调用 Activity2 吗?
你应该像这样调用 Activity2
Intent i = new Intent(Activity1.this, Activity2.class);
startActivityForResult(i, 1);
【讨论】:
以上是关于使用操作栏发送数据 [Android]的主要内容,如果未能解决你的问题,请参考以下文章
Android进阶:5发送post请求json数据格式以及okhttp框架的使用