Android getIntent()返回当前活动

时间:2016-06-02 01:16:00

标签: android android-intent

我有一个关于getIntent()的问题; 有人制作活动(活动A)来调用我的活动(活动B)。所以它的包名不同。问题是当我使用getIntent()时,getIntent的返回值是Activity B.所以intent.getExtras()为null。 有什么问题?我认为getIntent()应该返回Activity A. 从活动A到B,这是一项很好的工作。

活动A

Intent intent = new Intent();
intent.setClassName(B Package, B Activity);
intent.putExtra("Test", test);
startActivityForResult(intent, REQUEST_OK);

活动B

Intent intent = getIntent();
Log.d(TAG, "" +getIntent());
if(intent.getExtras() != null){
        String name = intent.getStringExtra("Test");
}

感谢。

1 个答案:

答案 0 :(得分:1)

活动A

public void testIntentCall(View view) {
        Intent intent = new Intent(this,testIntent.class);
        intent.putExtra("TEST","test");
        startActivity(intent);
    }

活动B

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Log.d("INTENT TEST","Intent Passed=>" + getIntent().toString());
    Intent intent = getIntent();
    if(intent.getExtras() != null) {
        Log.d("INTENT TEST", "Intent Extras=>" +intent.getExtras().toString());
        Log.d("INTENT TEST", "Intent Extra TEST =>" + intent.getStringExtra("TEST"));
    }
    finish();
}

结果: -

06-02 13:45:40.615 11027-11027/mike092015.app001 D/INTENT TEST: Intent Passed=>Intent { cmp=mike092015.app001/.testIntent (has extras) }
06-02 13:48:00.531 11027-11027/mike092015.app001 D/INTENT TEST: Intent Extras=>Bundle[mParcelledData.dataSize=40]
06-02 13:48:00.531 11027-11027/mike092015.app001 D/INTENT TEST: Intent Extra TEST =>test

所以问题似乎是setClassNameStartActivityForResult

使用StartActivityForResult(intent,0) 1 进行测试,运行效果相同。所以问题似乎是setClassname

我想知道问题是否是由于基于B Package, B Activity被设置/传递而调用的类组件,活动B是从活动B开始另一个活动B,因此它是'那么父母可能就是自己。也许日志包含2条消息,也许第一条消息显示A作为调用者活动。

B包和B活动是什么,在确定问题时可能至关重要。