簡體   English   中英

Android 應用程序在更改方向時崩潰

[英]Android app crashed when change orientation

當應用程序的方向發生更改時,會發生此錯誤,請幫助我

W/ActionBarDrawerToggle: DrawerToggle may not show up because NavigationIcon is not visible. You may need to call actionbar.setDisplayHomeAsUpEnabled(true);
D/AndroidRuntime: Shutting down VM
E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.explore_kpk, PID: 24892
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.explore_kpk/com.example.explore_kpk.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void androidx.recyclerview.widget.RecyclerView.setLayoutManager(androidx.recyclerview.widget.RecyclerView$LayoutManager)' on a null object reference
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3256)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3352)
        at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:5389)
        at android.app.ActivityThread.access$1200(ActivityThread.java:223)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1803)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:158)
        at android.app.ActivityThread.main(ActivityThread.java:7231)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
     ***Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void androidx.recyclerview.widget.RecyclerView.setLayoutManager(androidx.recyclerview.widget.RecyclerView$LayoutManager)' on a null object reference***
        ***at com.example.explore_kpk.MainActivity.onCreate(MainActivity.java:121)
        at android.app.Activity.performCreate(Activity.java:6877)***
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1136)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3209)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3352) 
        at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:5389) 
        at android.app.ActivityThread.access$1200(ActivityThread.java:223) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1803) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:158) 
        at android.app.ActivityThread.main(ActivityThread.java:7231) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 
I/Process: Sending signal. PID: 24892 SIG: 9

這是錯誤指向** com.example.explore_kpk.MainActivity.onCreate(MainActivity.java:121)的代碼

  RecyclerView recyclerView=(RecyclerView)findViewById(R.id.recyler_view);

        RecyclerViewAdapter recyclerViewAdapter = new RecyclerViewAdapter(this, recyclerList);
        long seed = System.nanoTime();
        Collections.shuffle(recyclerList, new Random(seed));

        GridLayoutManager gridLayoutManager=new GridLayoutManager(this, mNoOfColumns);
        recyclerView.setLayoutManager(gridLayoutManager);
        recyclerView.setAdapter(recyclerViewAdapter);

您的例外是說您正在嘗試在null object reference上使用setLayoutManager 這意味着您的 recyclerView 目前是recylcerView 我沒有看到你的整個代碼,所以我不能給你一個即時的解決方案。 我可以為您說的是,每次更改屏幕方向時,您當前的活動都將被銷毀並再次調用。 因此, onCreate將再次被調用,其他一切都像你剛剛開始新的Activity 有時這里會發生問題,因此關於如何處理這些事件的選擇很少。


在配置更改期間保留 object

這意味着您可以在屏幕旋轉時保留數據。 這可以通過 Bundle 完成,但如果您有大量數據,那么最好使用 ViewModel object。 如何在此處進行此檢查:


自己處理配置更改

這個其他選項帶有很大的CAUTION 當您確實需要避免因配置更改而重新啟動時,請將此視為最后的手段。 這樣做是為了防止您的活動重新啟動。 如果您無法保存您的實例,那么我建議您這樣做,但首先,嘗試使用 ViewModel 和 Bundles 來解決此問題。

這個怎么做?

<activity
        android:name=".MainActivity"
        android:configChanges="orientation|screenSize|screenLayout" />

android:configChanges行添加到您的<activity/>標簽內的AndroidManifest.xml中。

當 object 添加到 ArrayList 時,Android 應用程序崩潰<object><div id="text_translate"><p>我是新手,因此對任何錯誤表示歉意。</p><p> 背景:作為 object 培訓的一部分,我正在嘗試添加 object 練習的 arraylist。 然而。 每次我嘗試將 object 練習添加到訓練的 Arraylist 時,應用程序都會崩潰。 歡迎任何幫助。</p><p> 對象訓練和鍛煉看起來像這樣</p><pre>public class Training { public Integer trainingNumber; public Date datum; public Integer nrOfExercises; public ArrayList&lt;Exercise&gt; exercises; } public class Training { public Integer trainingNumber; public Date datum; public Integer nrOfExercises; public ArrayList&lt;Exercise&gt; exercises; }</pre><p> 試圖生成所有這些的代碼如下:</p><pre> private Training createRandomTraining(int i){ Training randomTraining = new Training(); Random random = new Random(); int d = random.nextInt(30)+1; int m = random.nextInt(12)+1; //int y = random.nextInt(21)+2000; int amountOfExercises = random.nextInt(9-6)+6; randomTraining.trainingNumber = i; randomTraining.datum = new Date(2021,m,d); for (int j = 0; j &lt; amountOfExercises; j ++){ Exercise exercise = new Exercise(); Random r = new Random(); int set = r.nextInt(5)+1; int nameInt = r.nextInt(3); int rep = r.nextInt(12)+1; //int y = random.nextInt(21)+2000; exercise.trainingNumber = i; exercise.exerciseNumber = j+1; exercise.exerciseName = getExerciseName(nameInt); exercise.sets = set; exercise.reps = rep; exercise.weight = random.nextInt(200-50)+50; randomTraining.exercises.add(exercise); //the app crashes here. //The other parts work fine. } randomTraining.nrOfExercises = amountOfExercises; return randomTraining; }</pre></div></object>

[英]Android app crashed when object is added to ArrayList<Object>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

相關問題 當我嘗試打開它時,Android 應用程序崩潰了 Android方向更改導致應用程序崩潰 Android應用程序在setContentView上崩潰 使用wakelock.release()關閉應用程序時Android應用程序崩潰 方向發生變化時,android中的片段無法正常工作 更改網頁視圖大小時,我的應用程序崩潰了 按下主屏幕按鈕但方向更改正常時,Android應用程序崩潰 設置ListAdapter時Android Java App崩潰 當 object 添加到 ArrayList 時,Android 應用程序崩潰<object><div id="text_translate"><p>我是新手,因此對任何錯誤表示歉意。</p><p> 背景:作為 object 培訓的一部分,我正在嘗試添加 object 練習的 arraylist。 然而。 每次我嘗試將 object 練習添加到訓練的 Arraylist 時,應用程序都會崩潰。 歡迎任何幫助。</p><p> 對象訓練和鍛煉看起來像這樣</p><pre>public class Training { public Integer trainingNumber; public Date datum; public Integer nrOfExercises; public ArrayList&lt;Exercise&gt; exercises; } public class Training { public Integer trainingNumber; public Date datum; public Integer nrOfExercises; public ArrayList&lt;Exercise&gt; exercises; }</pre><p> 試圖生成所有這些的代碼如下:</p><pre> private Training createRandomTraining(int i){ Training randomTraining = new Training(); Random random = new Random(); int d = random.nextInt(30)+1; int m = random.nextInt(12)+1; //int y = random.nextInt(21)+2000; int amountOfExercises = random.nextInt(9-6)+6; randomTraining.trainingNumber = i; randomTraining.datum = new Date(2021,m,d); for (int j = 0; j &lt; amountOfExercises; j ++){ Exercise exercise = new Exercise(); Random r = new Random(); int set = r.nextInt(5)+1; int nameInt = r.nextInt(3); int rep = r.nextInt(12)+1; //int y = random.nextInt(21)+2000; exercise.trainingNumber = i; exercise.exerciseNumber = j+1; exercise.exerciseName = getExerciseName(nameInt); exercise.sets = set; exercise.reps = rep; exercise.weight = random.nextInt(200-50)+50; randomTraining.exercises.add(exercise); //the app crashes here. //The other parts work fine. } randomTraining.nrOfExercises = amountOfExercises; return randomTraining; }</pre></div></object> 從一個活動移動到另一個活動時,Android 應用程序崩潰
 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM