我试图找出如何在我的应用程序中启动新意图,我遇到了几种措辞方式。
这个语法会返回一个运行时错误,即ActivityNotFound异常。
Intent in = new Intent("com.something.something");
当然,我的Android清单包含意图过滤器内的一个操作:
<activity
android:name=".SecondActivity"
android:label="@string/title_activity_second" >
<intent-filter>
<action android:name="com.something.something" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
这种格式是可行的:
Intent in = new Intent(MainActivity.this, SecondActivity.class);
我还尝试了以下方法:
Intent in = new Intent(this, SomeActivity.class);
在我正在阅读的一本书中,推荐了一个解决方案来解决这个问题。但是运行后返回了一个“activitynotfound”的错误。
以下方法会让Eclipse在setClass和setClassName之间无限循环:
Intent in = new Intent().setClass(this, SecondActivity.class);
我在一个onclick方法中使用它:
ok.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
Intent in = new Intent(MainActivity.this, SecondActivity.class);
startActivity(in);
}
});
}
这两者之间有什么区别,为什么只有其中一个对我有效?
敬礼 /M
Intent
构造函数的第一个参数签名为(Context, Class)
,只使用Context
参数获取包名。因此,您可以使用应用程序的任何Context
,这将完美地工作。显式Intent
的Activity
由第二个参数设置。 - David Wasser