Mar*_*rco 6 android android-intent android-activity
我是这个世界的新人.我使用startActivity(intent)时遇到问题.这是清单:
<activity
android:name="com.example.counter.Splash"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.example.counter.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
Run Code Online (Sandbox Code Playgroud)
这是代码:
public class Splash extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);
Thread timer = new Thread(){
public void run()
{
try
{
sleep(5000);
}
catch (InterruptedException e)
{
e.printStackTrace();
}
finally
{
Intent i=new Intent ("com.example.counter.MainActivity");
startActivity(i);
}
}
};
timer.start();
}
Run Code Online (Sandbox Code Playgroud)
我想要显示Splash活动5秒钟,然后显示MainActivity.LogErrors:!https://www.dropbox.com/s/kg7xyp6h4b95itq/Screenshot%202014-02-08%2016.57.36.png
cod*_*lus 14
有两种方法可以做你想做的事情.
IntentIntent参考意图类型
Intent声明Intent Filters你Activity在你的AndroidManifest.xml.通过这样做,Android系统可以了解Intents您的组件(在这种情况下,您的MainActivity)可以处理的类型.
<activity
android:name="com.example.counter.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="com.example.counter.MainAction" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<activity>
Run Code Online (Sandbox Code Playgroud)
现在你可以Activity用同样的方式启动你了Intent
Intent i=new Intent ("com.example.counter.MainAction");
startActivity(i);
Run Code Online (Sandbox Code Playgroud)
Intents当您没有明确知道哪个Activity必须启动并且您希望Android系统决定启动哪个组件时,会使用这种隐式.如果系统找到多个可以处理您的Intent的组件,它将允许用户选择.
注意:可能没有可以处理您意图的应用程序.在这种情况下,当您调用startActivity()时,您的应用程序将崩溃.为避免这种情况,在调用startActivity()之前,首先应验证系统中是否至少有一个可以处理意图的应用程序.为此,请在intent对象上使用resolveActivity().
Intent在您的情况下,您应该使用明确的,Intent因为您已经知道Activity要启动哪个.因此,Intent通过传递上下文和要启动的组件(Activity)类来创建.
Intent i=new Intent (this,MainActivity.class);
startActivity(i);
Run Code Online (Sandbox Code Playgroud)
您必须引用class您想要开始的内容。所以你需要类似的东西:
Intent newAct = new Intent(this, Splash.class);
startActivity(newAct);
Run Code Online (Sandbox Code Playgroud)
您传递的是一个Action不被理解为类名的名称。
| 归档时间: |
|
| 查看次数: |
22042 次 |
| 最近记录: |