存储一项活动的意图但启动其他活动

时间:2016-04-26 08:49:48

标签: java android android-intent android-activity

我是Android新手,我遇到了问题。我想存储一个活动的意图,但开始一个不同的活动。我有一个backgroundworker活动,必须存储postAnnotationActivity的意图,但必须启动InstructionsActivity。如果我在PostAnnotationActivity中使用intentID.getStringExtra,那么输出= null。有人可以帮忙吗?

Backgroundworker的部分代码:

        Intent intent = new Intent(context, InstructionsActivity.class);
        Intent intentID = new Intent(context, PostAnnotationsActivity.class);
        intentID.putExtra(ID, id);
        context.startActivity(intent);

PostAnnotationActivity的一部分:

    Intent intentID = getIntent();
    String getID = intentID.getStringExtra(BackgroundWorker.ID);

从说明活动我将使用startActivity(new Intent(this, ShowPaintingActivity.class)转到StartActivty,然后使用startActivity(new Intent(this, PostAnnotationsActivity.class));转到PostAnnotationActivity

3 个答案:

答案 0 :(得分:1)

修改您的代码如下:

在Backgroundworker中:

 Intent intentID = new Intent(context, InstructionsActivity.class);
 intentID.putExtra("ID", id);
 context.startActivity(intentID);

在InstructionsActivity中:

 Intent intentID = getIntent();
 String getID = intentID.getStringExtra("ID");

 Intent intent = new Intent(context, ShowPaintingActivity.class);
 intent.putExtra("ID", getID);
 context.startActivity(intent);

在ShowPaintingActivity中:

 Intent intentID = getIntent();
 String getID = intentID.getStringExtra("ID");

 Intent intent = new Intent(context, PostAnnotationActivity.class);
 intent.putExtra("ID", getID);
 context.startActivity(intent);

在PostAnnotationActivity中:

Intent intentID = getIntent();
String getID = intentID.getStringExtra("ID");

另一个更好的解决方案是,如用户1375469建议的那样,您可以将值保存到BackgroundWorker中的首选项,然后从PostAnnotation Activity中检索它。

答案 1 :(得分:1)

尝试将Intent存储为字符串,并使用共享首选项来存储/检索您的Intent。像这样。

    SharedPreferences prefs = this.getSharedPreferences("myPrefsKey", Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = prefs.edit();

    editor.putString("StoredIntent", "String you want to store here");
    editor.commit();

答案 2 :(得分:0)

您的输出为空,因为您没有启动活动,即

 context.startActivity(intentID);  

当你将数据传递给它时..
并且您想要转到我的InstuctionsActivity但已经存储了一些来自BackgroundWorker for PostAnnotationActivity的数据....
因此,您必须为此目的使用SharedPreference ....