Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android getIntent()返回当前活动_Android_Android Intent - Fatal编程技术网

Android getIntent()返回当前活动

Android getIntent()返回当前活动,android,android-intent,Android,Android Intent,我有一个关于getIntent()的问题; 有人把活动(活动A)称为我的活动(活动B)。所以它是不同的包名。问题是,当我使用getIntent()时,getIntent的返回是活动B。因此intent.getExtras()为null。 问题是什么?我认为getIntent()应该返回活动A。 从活动A开始到活动B是一项很好的工作 活动A Intent intent = new Intent(); intent.setClassName(B Package, B Activity); inten

我有一个关于getIntent()的问题; 有人把活动(活动A)称为我的活动(活动B)。所以它是不同的包名。问题是,当我使用getIntent()时,getIntent的返回是活动B。因此intent.getExtras()为null。 问题是什么?我认为getIntent()应该返回活动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");
}

谢谢。

活动Aas

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

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
因此问题似乎与
setClassName
StartActivityForResult
有关

使用
StartActivityForResult(intent,0)
1进行测试,运行正常,结果相同。因此,问题似乎与
setClassname
有关

我想知道问题是否在于活动B,由于调用了类组件,基于设置/传递的
B包,B活动
,正在从活动B启动另一个活动B,因此它的父级可能就是它自己。日志可能包含2条消息,第一条消息可能显示A作为调用方活动


什么是B包和B活动可能是确定问题的关键。

不可能只调用getExtras。我有一个错误,因为getExtras()未定义。根据getIntent()返回启动活动的意图的方法,我认为您是错的。@Buildersrejected,是的,您是对的。但问题是它无法返回已启动的活动。正如我所说,它返回当前活动;shopid=getIntent().getLongExtra(“shopid”,-1)未创建意图。在B@MikeT中,
onCreate
super.onCreate()
之后,您可能还没有完成您的任务。根本问题是getIntent()是当前活动。这就是为什么getStringExtra不起作用,我在onCreate()中调用super.onCreate()。getIntent()方法不返回活动,而是返回一个意图。如果查看文档,它将返回启动当前活动的意图。因此,当您在活动B中调用getIntent()时,它将返回在活动A中创建的用于启动活动B的意图。请参见此处:@Daniel Nugent you's right。它返回了意图。但是我尝试记录了关于getIntent()的adabout。它返回的是活动B的意图,而不是活动A的意图。这到底是什么意思?显示日志输出…您不会被输出弄糊涂。e、 g.在回答中(结果即日志提取)
getIntent()
返回testIntent活动中的
cmp=mike09215.app001/.testIntent
。我相信这不是调用活动,而是获得输出的拥有活动?@MikeT没错,拥有活动就是输出,正如你所说的。