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

标签 java android android-activity android-studio

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

相关文章:

java - 在 Java 上将字符串分配给字节并在开头指定字符串长度

java - Android 中的 Onclick 功能

android - 什么是正内边距和负内边距?

android - Activity 转换期间动画缓慢

Javascript : Chrome dev tools OR NetBeans?

java - JPA + Hibernate - 父表和子表之间的内部联接

java - map 的 map 根据内部 map 值获取外部 map

javascript - Phonegap 3.0 - Android : Native Scrollbar Not Visible

android - 如何同时 "destroy"多个Android Activity

android - onActivityResult 从未在 TabActivity 中被调用