2013-03-25 68 views
19

我在启动画面后加载新的意图时遇到问题。我已经看过与这个例外有关的问题,但他们似乎都在处理像谷歌播放或谷歌地图没有被正确引用的事情,这不是我的情况。android.content.ActivityNotFoundException:找不到处理意图启动画面的活动

这是我看过

Not found activity to handle intent?

activity not found to handle intent

no activity found to handle intent

相关问题,下面是我的清单代码

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.android.main" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk android:minSdkVersion="15" /> 
    <uses-permission android:name="android.permission.INTERNET"/> 

    <application 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" > 
     <activity 
      android:name=".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=".HomePage" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.HOMEPAGE" /> 

       <category android:name="android.intent.category.DEFAULT" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name=".OrderPlaced" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.ORDERPLACED" /> 

       <category android:name="android.intent.category.DEFAULT" /> 
      </intent-filter> 
     </activity> 
    </application> 

</manifest> 

这里是该类飞溅

package com.android.main; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 

public class Splash extends Activity{ 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.splash); 

     Thread timer = new Thread(){ 
      public void run(){ 
       try{ 
        sleep(1000); 
       }catch(InterruptedException e) { 
        e.printStackTrace(); 
       }finally{ 
        Intent openStartingPoint = new Intent("com.android.main.HOMEPAGE"); 
        startActivity(openStartingPoint); 
       } 
      } 
     }; 
     timer.start(); 
    } 

    @Override 
    protected void onPause() { 

     super.onPause(); 
     finish(); 
    } 


} 

这里的代码是类主页我想开机画面加载启动画面后

package com.android.main; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.widget.Button; 
import android.widget.CheckBox; 
import android.widget.EditText; 
import android.widget.Spinner; 
import android.widget.TextView; 

public class HomePage extends Activity { 
    /** Called when the activity is first created. */ 


    TextView name; 
    EditText editName; 
    TextView drinks; 
    Spinner drinksSpinner; 
    TextView message; 
    CheckBox checkbox; 
    Button createOrderButton; 


    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     createOrder(); 
    } 

    public void createOrder(){ 

     createOrderButton = (Button) findViewById(R.id.bCreateOrder); 
     createOrderButton.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       postInformationtoAPI(); 

      } 

      private void postInformationtoAPI() { 

       goToOrderCompleted(); 
      } 

      private void goToOrderCompleted() { 
       Intent intent = new Intent(HomePage.this , OrderPlaced.class); 
       HomePage.this.startActivity(intent); 
       Log.i("onClick", "trying to start new activity to change layout"); 
      } 
     }); 

    } 
} 

的应用部队退出后加载并给出了以下异常

03-14 22:32:33.553: E/AndroidRuntime(3166): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=com.android.main.HOMEPAGE } 

任何帮助,将不胜感激

回答

15

你必须区分意图的构造函数,

Intent openStartingPoint = new Intent("com.android.main.HOMEPAGE"); 

即假定com.android.main.HOMEPAGE意图的行为过滤。这在你的应用程序的android manifest.xml文件中不可用。你有

<action android:name="android.intent.action.HOMEPAGE" />

应该是,

<action android:name="com.android.main.HOMEPAGE" />

只是改变它,

Intent openStartingPoint = new Intent(Splash.this, HOMEPAGE.class); 
+1

非常感谢您解答它的快速反应。 – DavedCusack 2013-03-25 12:25:10

1
 <activity 
     android:label="@string/app_name" 
     android:name=".SplashScreen" 
     android:screenOrientation="landscape" 
     android:theme="@android:style/Theme.NoTitleBar.Fullscreen" > 
     <intent-filter > 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity 
     android:name="com.android.main.HOMEPAGE" 
     android:screenOrientation="landscape" 
     android:theme="@android:style/Theme.NoTitleBar.Fullscreen" > 
     <intent-filter > 
      <action android:name="com.android.main.HOMEPAGE" /> 

      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
    </activity> 

另外我想有一个定时器来显示启动画面

public class SplashScreen extends Activity{ 

Timer splashTimer; 
SplashTimerHandler splashTimerHandler; 

private boolean applicationPaused=false; 

@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 

    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
      WindowManager.LayoutParams.FLAG_FULLSCREEN); 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 

    setContentView(R.layout.main); 

    this.setSplash(); 


} 

private void setSplash() 
{ 
    this.splashTimerHandler=new SplashTimerHandler(); 
    this.splashTimer=new Timer(); 

    this.splashTimer.schedule(this.splashTimerHandler, 0, 1000); 

} 

@Override 
public void onPause() 
{ 
    super.onPause(); 
    this.applicationPaused=true; 
    this.closeSplashTimer(); 
} 

@Override 
public void onResume() 
{ 
    super.onResume(); 

    if(this.applicationPaused) 
    { 
     this.applicationPaused=false; 
     this.closeSplashTimer(); 
     this.setSplash(); 
    } 
} 

public class SplashTimerHandler extends TimerTask{ 

    int splashTimerCounter=0; 
    @Override 
    public void run() 
    { 
     splashTimerCounter++; 
     if(splashTimerCounter>2) 
     { 
      runOnUiThread(splashTimeOver); 
     }  
    } 

    private Runnable splashTimeOver=new Runnable() { 

     @Override 
     public void run() 
     { 
      closeSplashTimer(); 
      startHomeScreen(); 
     } 
    };  
} 

protected void closeSplashTimer() 
{ 
    if(this.splashTimer!=null) 
    { 
     this.splashTimer.cancel(); 
     this.splashTimer=null; 
    } 

} 

private void startHomeScreen() 
{ 
    this.closeSplashScreen(); 
    startActivity(new Intent("com.android.main.HOMEPAGE")); 

} 

private void closeSplashScreen() 
{ 
    this.closeSplashTimer(); 
    this.finish(); 

} 

@Override 
public boolean onKeyDown(int keycode, KeyEvent event) 
{ 
    if(keycode==KeyEvent.KEYCODE_BACK) 
    { 
     this.closeSplashScreen(); 
    } 
    return true; 
} 
} 
+0

闪现屏幕上的建议酷感谢,这是只是一个更好的方法来处理一般的闪屏? – DavedCusack 2013-03-25 12:34:08

相关问题