在我之前的帖子中,我现在想从主 Activity 中调用一个子 Activity 多次。在我的真实项目中(与下面的 noddy 测试相反),当调用子 Activity 时,其标题显示“输入第一个数据集”,然后邀请用户输入一些数据。该数据实际上存储在一个公共(public)类中,而不是返回给主要 Activity 。然后需要用新的提示“输入第二个数据集”再次调用 child ,同样的事情发生了。 我无法解决的是如何做到这一点。如果我给 child 打了两次电话,每次,只有第二次电话似乎会发生,每次出现在 child Activity 中的提示都是“输入第二个数据集”。我相信这个 startActivityForResult() 方法设计用于当您想要调用一个 Activity 并等待结果时使用(您使用 onActivityResult() 做的,不是吗),但它不会等待。
我到底该怎么做?示例代码如下。
感谢任何能清楚地解释我哪里出错以及正确代码应该是什么的人。
MainActivity 代码摘录
@Override
public void onResume(){
super.onResume();
TextView maintop = (TextView)findViewById(R.id.maintop);
maintop.setText(Common.mess1);
}
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button mainbutton = (Button)findViewById(R.id.mainbutton);
mainbutton.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View view)
{
Intent intent1 = new Intent(MainActivity.this,Child.class);
intent1.putExtra("Prompt", "Enter first data set");
startActivityForResult(intent1,1);
onActivityResult(1,1,intent1);
}
});
mainbutton.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View view)
{
Intent intent2 = new Intent(MainActivity.this,Child.class);
intent2.putExtra("Prompt", "Enter second data set");
startActivityForResult(intent2,1);
onActivityResult(1,1,intent2);
}
});
}
最佳答案
按钮中只能有一个点击监听器,因此当您第二次调用 set 时,它会替换监听器。 您需要做的是为输入的第一个数据设置点击监听器,不要调用 onActivityResult(1,1,intent1) 这不是您的操作方式,您需要重写该方法,并在 onActivityResult 中调用第二个。 像这样:
static final int FIRST_INTENT = 1;
static final int SECOND_INTENT = 2;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button mainbutton = (Button)findViewById(R.id.mainbutton);
mainbutton.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View view)
{
Intent intent1 = new Intent(MainActivity.this,Child.class);
intent1.putExtra("Prompt", "Enter first data set");
startActivityForResult(intent1,FIRST_INTENT);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == FIRST_INTENT) {
if (resultCode == RESULT_OK) {
Intent intent2 = new Intent(MainActivity.this,Child.class);
intent2.putExtra("Prompt", "Enter second data set");
startActivityForResult(intent2,SECOND_INTENT);
}
}
}
在你的 child Activity 中
//DO SOMETHING
....
setResult(RESULT_OK)
finish();
}
更多检查 [ http://developer.android.com/intl/es/training/basics/intents/result.html] [ http://developer.android.com/intl/es/reference/android/app/Activity.html#setResult%28int%29]
关于java - 在 Android Studio 中,不能多次从 Activity A 调用 Activity B,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33270698/