2015-04-18 67 views
0

以下是我的Android啓動畫面活動代碼。Android啓動畫面無法加載其他活動

當它嘗試加載其他活動時,應用程序在Android 4.0和4.1上崩潰。

我不知道這是什麼原因造成的,因爲當它崩潰時,它不記錄任何錯誤。

有沒有人遇到過這樣的事情?

import android.app.Activity; 
import android.content.Context; 
import android.content.Intent; 
import android.content.SharedPreferences; 
import android.net.ConnectivityManager; 
import android.net.NetworkInfo; 
import android.os.Bundle; 
import android.os.Handler; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ImageView; 
import android.widget.TextView; 
import android.widget.Toast; 

import org.bitbucket.infovillafoundation.denko.R; 
import org.bitbucket.infovillafoundation.denko.component.DaggerDenkoStationComponent; 
import org.bitbucket.infovillafoundation.denko.component.DenkoStationComponent; 
import org.bitbucket.infovillafoundation.denko.models.DenkoModel; 
import org.bitbucket.infovillafoundation.denko.module.DenkoStationModule; 
import org.bitbucket.infovillafoundation.denko.service.DenkoStationService; 

import butterknife.ButterKnife; 
import butterknife.InjectView; 
import retrofit.Callback; 
import retrofit.RetrofitError; 
import retrofit.client.Response; 


public class SplashScreenActivity extends Activity { 

    @InjectView(R.id.imgLogo) 
    ImageView logoImage; 

    @InjectView(R.id.welcomeText) 
    TextView welcomeText; 

    private Handler splashHandler = new Handler(); 

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

     Runnable r = new Runnable() { 
      @Override 
      public void run() { 
       //********************* application is crashing here 
       Intent mainIntent = new Intent(SplashScreenActivity.this, LanguageOptionActivity.class); 
       startActivity(mainIntent); 
       finish(); 
       overridePendingTransition(R.anim.fade_in, R.anim.fade_out); 
      } 
     }; 

     setContentView(R.layout.activity_splash); 

     ButterKnife.inject(this); 

     DenkoStationComponent component = DaggerDenkoStationComponent.builder().denkoStationModule(new DenkoStationModule()).build(); 
     final DenkoStationService denkoStationService = component.provideDenkoStationService(); 

     Callback<DenkoModel> callback = new Callback<DenkoModel>() { 
      @Override 
      public void success(DenkoModel denkoModel, Response response) { 
       toast(R.string.server_connection_successful); 
       denkoStationService.updateDatabaseWithDenkoModel(denkoModel); 
      } 

      @Override 
      public void failure(RetrofitError error) { 
       toast(R.string.server_connection_failed); 
      } 

      public void toast(int textId) { 
       LayoutInflater inflater = getLayoutInflater(); 
       View layout = inflater.inflate(R.layout.toast_layout, 
         (ViewGroup) findViewById(R.id.toast_layout_root)); 

       TextView text = (TextView) layout.findViewById(R.id.toast_text); 
       text.setText(getResources().getString(textId)); 

       Toast toast = new Toast(getApplicationContext()); 
       toast.setDuration(Toast.LENGTH_LONG); 
       toast.setView(layout); 
       toast.show(); 
      } 
     }; 

     denkoStationService.fetchDenkoModel(denkoStationService.fetchDenkoLastDataState(), callback); 

     if (isNetworkAvailable()) 
      splashHandler.postDelayed(r, 3000); 
     else { 
      toast(R.string.no_internet_connection); 
      splashHandler.postDelayed(r, 3000); 
     } 

     //********************* application is crashing here 
     Intent mainIntent = new Intent(this, LanguageOptionActivity.class); 
     startActivity(mainIntent); 
    } 

    @Override 
    protected void onResume() { 
     super.onResume(); 
    } 

    private boolean isNetworkAvailable() { 
     ConnectivityManager connectivityManager 
       = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
     NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo(); 
     return activeNetworkInfo != null; 
    } 

    private void toast(int textId) { 
     LayoutInflater inflater = getLayoutInflater(); 
     View layout = inflater.inflate(R.layout.toast_layout, 
       (ViewGroup) findViewById(R.id.toast_layout_root)); 

     TextView text = (TextView) layout.findViewById(R.id.toast_text); 
     text.setText(getResources().getString(textId)); 

     Toast toast = new Toast(getApplicationContext()); 
     toast.setDuration(Toast.LENGTH_LONG); 
     toast.setView(layout); 
     toast.show(); 
    } 
} 

編輯:AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="org.bitbucket.infovillafoundation.denko"> 

    <uses-sdk android:minSdkVersion="14" /> 

    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" /> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

    <uses-feature 
     android:glEsVersion="0x00020000" 
     android:required="true" /> 

    <permission 
     android:name="org.bitbucket.infovillafoundation.denko.MAPS_RECEIVE" 
     android:protectionLevel="signature" /> 
    <uses-permission android:name="org.bitbucket.infovillafoundation.denko.MAPS_RECEIVE" /> 

    <application 
     android:name=".application.DenkoApplication" 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme"> 
     <activity 
      android:name=".activity.SplashScreenActivity" 
      android:label="@string/app_name" 
      android:screenOrientation="portrait" 
      android:theme="@android:style/Theme.NoTitleBar"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name=".activity.MainActivity" 
      android:label="@string/title_activity_home" 
      android:screenOrientation="portrait" 
      android:theme="@android:style/Theme.NoTitleBar" /> 
     <activity 
      android:name=".activity.LanguageOptionActivity" 
      android:label="@string/title_activity_language_option" 
      android:screenOrientation="portrait" 
      android:theme="@android:style/Theme.NoTitleBar" /> 

     <meta-data 
      android:name="com.google.android.maps.v2.API_KEY" 
      android:value="AIzaSyAubZsgoC4Z64qcOSpfK4grjrK5zrTEWxk" /> 
    </application> 

</manifest> 

我覺得,既然崩潰並不具有較高的Android版本,這種問題可能是不兼容的版本的OpenGL產生。

+1

請發佈有問題的日誌 –

+0

您希望在創建活動時將用戶重定向到其他活動!我建議在onStart()方法中寫入重定向代碼 – Mahmoud

+0

您也必須發佈您的清單,因爲spalsh必須在主要活動之前的清單中定義。 –

回答

0

我認爲你不能添加在AndroidManifest.xml.plz閃屏檢查

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 logoTimer = new Thread() { 
     public void run() { 
      try { 
       int logoTimer = 0; 
       while (logoTimer < 500) { 
        sleep(100); 
        logoTimer = logoTimer + 100; 
       } 

       Intent newIntent = new Intent(Splash.this,  MainActivity.class); 
       startActivity(newIntent); 
      } catch(InterruptedException e) { 
       e.printStackTrace(); 
      } finally { 
       finish(); 
      } 
     } 
    }; 
    logoTimer.start(); 
} 

}

Android中的Manifest.xml

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

您可以使用下面的活動有一些簡單的內容。注入佈局(見下文)並在佈局文件中註冊一個onclick-listener(方法「forward」)。在這種方法中,你可以打電話給你的下一個活動:

public class SplashScreen extends Activity{ 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.splashscreen); 
    } 

    public void forward(View v){ 
     startActivity(new Intent(this, MainActivity.class), 0); 
    } 
} 

splashscreen.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context=".MainActivity" > 
    <ImageView 
     android:id="@+id/splashscreen" 
     android:onClick="forward" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:src="@drawable/ic_launcher" /> 
</LinearLayout> 

添加在您的AndroidManifest.xml:

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" > 
    <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> 
    <activity android:name=".MainActivity" /> 
</application> 

類 「MainActivity」 代表你的主活動和類「SplashScreen」表示一個簡單的啓動畫面。

我希望這將幫助你:)

0

我看到的是,在調用活動的標籤,你仍然可以使用.activity name屬性 即您使用android:name=".activity.MainActivity" 代替android:name=".MainActivity"無論是閃屏活動的問題和主要活動。

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="org.bitbucket.infovillafoundation.denko"> 

    <uses-sdk android:minSdkVersion="14" /> 

    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" /> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

    <uses-feature 
     android:glEsVersion="0x00020000" 
     android:required="true" /> 

    <permission 
     android:name="org.bitbucket.infovillafoundation.denko.MAPS_RECEIVE" 
     android:protectionLevel="signature" /> 
    <uses-permission android:name="org.bitbucket.infovillafoundation.denko.MAPS_RECEIVE" /> 

    <application 
     android:name=".application.DenkoApplication" 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme"> 
     <activity 
      android:name=".SplashScreenActivity" 
      android:label="@string/app_name" 
      android:screenOrientation="portrait" 
      android:theme="@android:style/Theme.NoTitleBar"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name=".MainActivity" 
      android:label="@string/title_activity_home" 
      android:screenOrientation="portrait" 
      android:theme="@android:style/Theme.NoTitleBar" /> 
     <activity 
      android:name=".activity.LanguageOptionActivity" 
      android:label="@string/title_activity_language_option" 
      android:screenOrientation="portrait" 
      android:theme="@android:style/Theme.NoTitleBar" /> 

     <meta-data 
      android:name="com.google.android.maps.v2.API_KEY" 
      android:value="AIzaSyAubZsgoC4Z64qcOSpfK4grjrK5zrTEWxk" /> 
    </application> 

</manifest>