gpt4 book ai didi

java - 在 Android Studio 中,不能多次从 Activity A 调用 Activity B

转载 作者:行者123 更新时间:2023-11-30 01:49:29 26 4
gpt4 key购买 nike

在我之前的帖子中,我现在想从主 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com