gpt4 book ai didi

android - Android 中的隐式与显式 Intent(startActivity(intent) 崩溃)

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:24:22 25 4
gpt4 key购买 nike

我是这个世界上的新人。我在使用 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

最佳答案

有两种方法可以完成您想要做的事情。

  1. 使用隐式Intent
  2. 使用明确的Intent

引用Intent Types

  1. 隐式 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()。

  1. 显式 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com