- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我是这个世界上的新人。我在使用 startActivity(intent) 时遇到问题。这是 list :
<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>
这是代码:
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();
}
我想显示 Splash Activity 5 秒,然后显示 MainActivity。日志错误:! https://www.dropbox.com/s/kg7xyp6h4b95itq/Screenshot%202014-02-08%2016.57.36.png
最佳答案
有两种方法可以完成您想要做的事情。
Intent
Intent
Intent
在 AndroidManifest.xml
中为您的 Activity
声明 Intent Filters
。通过这样做,Android
系统了解您的组件(在本例中是您的 MainActivity)可以处理哪种类型的 Intents
。
<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>
现在您将能够使用相同的Intent
启动您的Activity
Intent i=new Intent ("com.example.counter.MainAction");
startActivity(i);
当您不明确知道必须启动哪个 Activity 并且您希望 Android 系统决定启动哪个组件时,会使用此类隐式 Intents
。如果系统找到多个可以处理您的 Intent 的组件,它将允许用户选择。
注意:可能没有应用程序可以处理您的 Intent 。在这种情况下,您的应用程序将在您调用 startActivity() 时崩溃。为避免这种情况,在调用 startActivity() 之前,您应该首先验证系统中至少注册了一个可以处理该 Intent 的应用程序。为此,请在您的 Intent 对象上使用 resolveActivity()。
Intent
在您的情况下,您应该使用明确的 Intent
,因为您已经知道要启动哪个 Activity
。因此,通过传递上下文和您要启动的组件(Activity)类来创建一个Intent
。
Intent i=new Intent (this,MainActivity.class);
startActivity(i);
关于android - Android 中的隐式与显式 Intent(startActivity(intent) 崩溃),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21647663/
我是一名优秀的程序员,十分优秀!