2013-03-25 43 views
19

Tôi gặp sự cố khi tải lên ý định mới sau màn hình giật gân của mình. Tôi đã xem xét các câu hỏi liên quan đến ngoại lệ này nhưng tất cả họ dường như đang đối phó với những thứ như chơi google hoặc bản đồ google không được tham chiếu một cách chính xác này không phải là trường hợp đối với tôi.android.content.ActivityNotFoundException: Không tìm thấy hoạt động nào để xử lý màn hình giật gân Intent

Đây là những câu hỏi có liên quan tôi đã xem xét

Not found activity to handle intent?

activity not found to handle intent

no activity found to handle intent

Dưới đây là mã manifest của tôi

<?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> 

Đây là mã cho giật gân lớp

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(); 
    } 


} 

Và đây là trang chủ lớp tôi đang cố gắng để tải sau khi màn hình splash

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"); 
      } 
     }); 

    } 
} 

Lực lượng ứng dụng bỏ sau khi tải màn hình giật gân và đưa ra ngoại lệ sau

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

Bất kỳ trợ giúp nào về vấn đề này sẽ được đánh giá rất cao

Trả lời

15

Bạn phải phân biệt Constructor của Ý định,

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

Mà giả com.android.main.HOMEPAGE như hành động Ý định của Bộ lọc. Không có sẵn trong tệp manifest.xml android của ứng dụng của bạn. Bạn có

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

mà nên,

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

HOẶC chỉ cần thay đổi nó với,

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

Cảm ơn bạn rất nhiều vì đã trả lời nhanh. – DavedCusack

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> 

Ngoài ra tôi sẽ có một nhiệm vụ hẹn giờ để hiển thị màn hình splash

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

mát cảm ơn cho lời khuyên trên màn hình giật gân, là thế này chỉ là một cách tốt hơn để tiếp cận màn hình giật gân nói chung? – DavedCusack

Các vấn đề liên quan