【问题标题】:Unexpected error while switching activities in android在android中切换活动时出现意外错误
【发布时间】:2013-06-13 13:27:34
【问题描述】:

我正在我的 android 应用程序中制作启动画面,但是如果我尝试在 Run() 中启动一个活动,我会发现应用程序的错误已意外停止,如果我使用 setContentView 而不是 startActivity,也会发生错误,即使我使用 SplashScreen.this.startActivity 而不是仅 startActivity 我得到错误。我尝试使用 TimerTask 而不是处理程序,但它发生了同样的情况,我做错了什么?

package name.appname;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;

public class SplashScreen extends Activity{
 @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.splash);
        Handler handler = new Handler();
        handler.postDelayed(getRunnableStartApp(), 1500);
  }//public void onCreate(Bundle savedInstanceState)

 public Runnable getRunnableStartApp(){
    return new Runnable(){
        public void run(){
            startActivity(new Intent(SplashScreen.this, MainActivity.class));//when i quit this line, no error happens...
            finish();
        }//public void run()
    };//new Runnable()
 }//public Runnable getRunnableStartApp()
}//public class SplashScreen extends Activity

这是清单:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="name.appname"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:allowBackup="false" android:label="@string/app_name">
        <activity android:name="SplashScreen"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest> 

我发现了错误:android.content.ActivityNotFoundException,但不知道为什么会这样

【问题讨论】:

  • 向我们展示您的清单文件。为清单中的活动创建条目?
  • 您遇到了哪个错误或异常......?
  • 通常,您使用 Runnable 和 Run() 在新线程中启动活动。如果您不需要新线程,那么 startactivity 就足够了:当新活动完成时,“开始”活动(SplashScreen)将再次获得焦点。这符合您的需求吗?

标签: android multithreading android-activity


【解决方案1】:

在清单文件中添加以下内容。 MainActivity 缺少条目

<activity android:name=".MainActivity"
          android:label="@string/app_name">
</activity>

也改一下

<activity android:name="name.appname.SplashScreen"
          android:label="@string/app_name">
<intent-filter>
          <action android:name="android.intent.action.MAIN" />
          <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

注意:如果启动画面什么都不做,有些人会认为它是邪恶的。检查以下

http://cyrilmottier.com/2012/05/03/splash-screens-are-evil-dont-use-them/

【讨论】:

  • 我要让那个飞溅加载信息,不在乎 Raghunandan
  • 我只是将链接发布为建议,如果您对启动没问题,请继续使用它
【解决方案2】:

在 Timertask 中使用 Runnable。
我的应用程序也有 SplashScreen,它运行良好。

【讨论】:

  • 为什么你认为 timer 和 timertask 比 handler 更好?
  • 处理程序更好,其他的就是创建你不需要的对象
  • 我知道处理程序比计时器好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-04-26
  • 1970-01-01
  • 2015-10-04
  • 1970-01-01
  • 1970-01-01
  • 2013-07-06
  • 1970-01-01
相关资源
最近更新 更多