2016-11-08 13 views
0

AndroidManifiest.xmlのメインアクティビティがMainActivityでない場合は、読み込みビューから起動したいが、開いたときに常にクラッシュします。エミュレータでは問題ありませんが、問題は電話機にAPKをインストールするときだけです。どんな助け?メインアクティビティがMainActivityでない場合、Androidアプリがクラッシュしました

AndroidManifiest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.example.daniel.jaentodayapp"> 
<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 
    <activity 
     android:name=".MainActivity" 
     android:screenOrientation="portrait" 
     android:theme="@style/AppTheme.NoActionBar"> 
    </activity> 
    <activity 
     android:name=".LoadingScreen" 
     android:screenOrientation="portrait" 
     android:theme="@style/AppTheme.NoActionBar"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 

LoadingScreen

public class LoadingScreen extends AppCompatActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_loading_screen); 
    new Thread(new Runnable() { 
     public void run() { 
      try { 
       Thread.sleep(3000); 
      } catch (InterruptedException e) { 
       e.printStackTrace(); 
      } finally { 
       Intent intent = new Intent(LoadingScreen.this, MainActivity.class); 
       startActivity(intent); 
      } 
     } 
    }).start(); 
} 

@Override 
protected void onPause() { 
    super.onPause(); 
    finish(); 
}} 

レイアウトロード画面

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/activity_loading_screen" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context="com.example.daniel.jaentodayapp.LoadingScreen"> 
<LinearLayout 
    android:orientation="horizontal" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@drawable/pcarga"></LinearLayout></RelativeLayout> 

これはエラーです:

E/AndroidRuntime: FATAL EXCEPTION: main 
       Process: com.example.daniel.jaentodayapp, PID: 18967 
       java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.daniel.jaentodayapp/com.example.daniel.jaentodayapp.LoadingScreen}: android.view.InflateException: Binary XML file line #9: Binary XML file line #9: Error inflating class <unknown> 
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416) 
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
        at android.app.ActivityThread.access$900(ActivityThread.java:150) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:148) 
        at android.app.ActivityThread.main(ActivityThread.java:5417) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
       Caused by: android.view.InflateException: Binary XML file line #9: Binary XML file line #9: Error inflating class <unknown> 
        at android.view.LayoutInflater.inflate(LayoutInflater.java:539) 
        at android.view.LayoutInflater.inflate(LayoutInflater.java:423) 
        at android.view.LayoutInflater.inflate(LayoutInflater.java:374) 
        at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:284) 
        at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) 
        at com.example.daniel.jaentodayapp.LoadingScreen.onCreate(LoadingScreen.java:13) 
        at android.app.Activity.performCreate(Activity.java:6285) 
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108) 
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369) 
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)  
        at android.app.ActivityThread.access$900(ActivityThread.java:150)  
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)  
        at android.os.Handler.dispatchMessage(Handler.java:102)  
        at android.os.Looper.loop(Looper.java:148)  
        at android.app.ActivityThread.main(ActivityThread.java:5417)  
        at java.lang.reflect.Method.invoke(Native Method)  
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)  
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)  
       Caused by: android.view.InflateException: Binary XML file line #9: Error inflating class <unknown> 
        at android.view.LayoutInflater.createView(LayoutInflater.java:645) 
        at com.android.internal.policy.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:58) 
        at android.view.LayoutInflater.onCreateView(LayoutInflater.java:694) 
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:762) 
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704) 
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:835) 
        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798) 
        at android.view.LayoutInflater.inflate(LayoutInflater.java:515) 
        at android.view.LayoutInflater.inflate(LayoutInflater.java:423)  
        at android.view.LayoutInflater.inflate(LayoutInflater.java:374)  
        at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:284)  
        at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)  
        at com.example.daniel.jaentodayapp.LoadingScreen.onCreate(LoadingScreen.java:13)  
        at android.app.Activity.performCreate(Activity.java:6285)  
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108)  
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)  
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)  
        at android.app.ActivityThread.access$900(ActivityThread.java:150)  
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)  
        at android.os.Handler.dispatchMessage(Handler.java:102)  
        at android.os.Looper.loop(Looper.java:148)  
        at android.app.ActivityThread.main(ActivityThread.java:5417)  
        at java.lang.reflect.Method.invoke(Native Method)  
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)  
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)  
       Caused by: java.lang.reflect.InvocationTargetException 
        at java.lang.reflect.Constructor.newInstance(Native Method) 
        at android.view.LayoutInflater.createView(LayoutInflater.java:619) 
        at com.android.internal.policy.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:58)  
        at android.view.LayoutInflater.onCreateView(LayoutInflater.java:694)  
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:762)  
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)  
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:835)  
        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)  
        at android.view.LayoutInflater.inflate(LayoutInflater.java:515)  
        at android.view.LayoutInflater.inflate(LayoutInflater.java:423)  
        at android.view.LayoutInflater.inflate(LayoutInflater.java:374)  
        at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:284)  
        at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)  
        at com.example.daniel.jaentodayapp.LoadingScreen.onCreate(LoadingScreen.java:13)  
        at android.app.Activity.performCreate(Activity.java:6285)  
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108)  
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)  
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)  
        at android.app.ActivityThread.access$900(ActivityThread.java:150)  
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)  
        at android.os.Handler.dispatchMessage(Handler.java:102)  
        at android.os.Looper.loop(Looper.java:148)  
        at android.app.ActivityThread.main(ActivityThread.java:5417)  
        at java.lang.reflect.Method.invoke(Native Method)  
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)  
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)  
       Caused by: java.lang.OutOfMemoryError: Failed to allocate a 255322380 byte allocation with 12571568 free bytes and 126MB until OOM 
        at dalvik.system.VMRuntime.newNonMovableArray(Native Method) 
        at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method) 
        at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:609) 
        at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:444) 
        at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:1080) 
        at android.content.res.Resources.loadDrawableForCookie(Resources.java:2635) 
        at android.content.res.Resources.loadDrawable(Resources.java:2540) 
        at android.content.res.TypedArray.getDrawable(TypedArray.java:870) 
        at android.view.View.<init>(View.java:3955) 
        at android.view.ViewGroup.<init>(ViewGroup.java:574) 
        at android.widget.LinearLayout.<init>(LinearLayout.java:203) 
        at android.widget.LinearLayout.<init>(LinearLayout.java:199) 
        at android.widget.LinearLayout.<init>(LinearLayout.java:195) 
        at java.lang.reflect.Constructor.newInstance(Native Method)  
        at android.view.LayoutInflater.createView(LayoutInflater.java:619)  
        at com.android.internal.policy.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:58)  
        at android.view.LayoutInflater.onCreateView(LayoutInflater.java:694)  
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:762)  
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)  
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:835)  
        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)  
        at android.view.LayoutInflater.inflate(LayoutInflater.java:515)  
        at android.view.LayoutInflater.inflate(LayoutInflater.java:423)  
        at android.view.LayoutInflater.inflate(LayoutInflater.java:374)  
        at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:284)  
        at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)  
        at com.example.daniel.jaentodayapp.LoadingScreen.onCreate(LoadingScreen.java:13)  
        at android.app.Activity.performCreate(Activity.java:6285)  
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108)  
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)  
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)  
        at android.app.ActivityThread.access$900(ActivityThread.java:150)  
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)  
        at android.os.Handler.dispatchMessage(Handler.java:102)  
        at android.os.Looper.loop(Looper.java:148)  
        at android.app.ActivityThread.main(ActivityThread.java:5417)  
        at java.lang.reflect.Method.invoke(Native Method)  

答えて

0

メインスレッドからのみstartActivity()と呼ぶことができます。あなたは、呼び出し元のスレッド上で実行されますあなたが.run()代わりの.start()実行可能なを呼び出した場合Runnableからの呼び出しがHandlerを使用したい場合は

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

@Override 
protected void onResume() { 
    super.onResume(); 
    Intent intent = new Intent(LoadingScreen.this, MainActivity.class); 
    startActivity(intent); 
    finish(); 
} 

Never put wait timer in loading screen unless necessary, call the MainActvity in onResume as by the time onResume is called, Sytem finishes the operations to load the App.

実装する方法のスタックオーバーフロー上の多くの例があります。スプラッシュ画面(読み込み画面)をうまく使います。その間、あなたはあなたが試すことができます。このソリューション

0

を使用することができます:あなたがあなたの新しい活動を開始しながら、

private final Handler mHandler = new Handler(); 

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

    mHandler.postDelayed(moveToMain, 3000); 
} 

private final Runnable moveToMain = new Runnable() { 
    public void run() { 
     startActivity(new Intent(LoadingScreen.this, MainActivity.class)); 
     finish(); 
    } 
}; 
0
new Handler().postDelayed(new Runnable() { 
    @Override 
    public void run() { 
    try { 
     Intent intent = new Intent(LoadingScreen.this,MainActivity.class); 
     startActivity(intent); 
     finish(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    } 
     }, 3000); 

あなたの活動を終了してください。 これは、メインスレッドでUIThreadを実行する際の問題です。 ご質問にお答えしたいと思います。
スタックトレースまたはエラーログを貼り付けるか表示すると、これに対する解決策を見つけやすくなります。

ありがとうございました

関連する問題