恢复到app时,尝试在空对象引用上写入字段’int android.app.Fragment.mNextAnim’

我有列表的活动,从firebase获取数据,我有菜单项取消选中所有复选框。 它第一次进入活动时工作正常,但是当我从这个活动中退出应用程序时,当我返回应用程序时应用程序进入睡眠状态

exceptionjava.lang.NullPointerException:尝试在空对象引用android.app.BackStackRecord.run(BackStackRecord.java:779)android.app.FragmentManagerImpl.execPendingActions(FragmentManager)上写入字段’int android.app.Fragment.mNextAnim’ .java:1582)android.app.FragmentManagerImpl $ 1.run(FragmentManager.java:483)android.os.Handler.handleCallback(Handler.java:751)android.os.Handler.dispatchMessage(Handler.java:95)android。 os.Looper.loop(Looper.java:154)android.app.ActivityThread.main(ActivityThread.java:6688)java.lang.reflect.Method.invoke(Method.java)com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1468)com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1358)

我试图理解为什么我得到null但没有成功,我调试我的应用程序,问题是在函数setIconPercent()

我的活动:

package com.nadav.weddingcalc.activity_best_list; import android.content.Context; import android.content.res.TypedArray; import android.os.Handler; import android.support.design.widget.FloatingActionButton; import android.support.v4.app.NavUtils; import android.support.v4.content.ContextCompat; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.Gravity; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.ImageView; import android.widget.ListView; import android.widget.ProgressBar; import android.widget.Toast; import com.google.android.gms.ads.AdRequest; import com.google.android.gms.ads.AdView; import com.google.firebase.auth.FirebaseAuth; import com.google.firebase.auth.FirebaseUser; import com.google.firebase.database.DataSnapshot; import com.google.firebase.database.DatabaseError; import com.google.firebase.database.DatabaseReference; import com.google.firebase.database.FirebaseDatabase; import com.google.firebase.database.ValueEventListener; import com.joanfuentes.hintcase.HintCase; import com.joanfuentes.hintcase.RectangularShape; import com.joanfuentes.hintcaseassets.hintcontentholders.SimpleHintContentHolder; import com.joanfuentes.hintcaseassets.shapeanimators.RevealRectangularShapeAnimator; import com.joanfuentes.hintcaseassets.shapeanimators.UnrevealRectangularShapeAnimator; import com.nadav.weddingcalc.R; import com.squareup.picasso.Picasso; public class ActivityBest extends AppCompatActivity { static ListView lv; private AdapterActivityBest adapterActivityBest; DatabaseReference mDatabase; FirebaseUser user; static private FirebaseAuth auth; DatabaseReference myRef; static AdView mAdView; public String numOfRows; MenuItem it; Menu men; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.fragment_activity_place); getSupportActionBar().setDisplayHomeAsUpEnabled(true); final ProgressBar pBar = (ProgressBar) findViewById(R.id.progresbar); mAdView = (AdView) findViewById(R.id.adView); AdRequest adRequest = new AdRequest.Builder(). addTestDevice(getString(R.string.ad_test_device_nexus5x)) .addTestDevice("0E9830DF43C4EB440157B8C079727CF9") .build(); mAdView.loadAd(adRequest); auth = FirebaseAuth.getInstance(); mDatabase = FirebaseDatabase.getInstance().getReference(); user = auth.getCurrentUser(); lv = (ListView) findViewById(R.id.lv); adapterActivityBest = new AdapterActivityBest(getApplicationContext() ,lv, this); FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); fab.setVisibility(View.INVISIBLE); lv.setAdapter(adapterActivityBest); new Handler().postDelayed(new Runnable() { @Override public void run() { FirebaseDatabase database = FirebaseDatabase.getInstance(); FirebaseUser user = auth.getCurrentUser(); myRef = database.getReference("users"); myRef.child(user.getUid()).child("list Best").orderByChild("orderNum").addValueEventListener(new ValueEventListener() { @Override public void onDataChange(DataSnapshot snapshot) { adapterActivityBest.removeAllll(); adapterActivityBest.notifyDataSetChanged(); if (!snapshot.hasChildren()) { auth = FirebaseAuth.getInstance(); mDatabase = FirebaseDatabase.getInstance().getReference(); FirebaseUser user = auth.getCurrentUser(); String[] temp = getResources().getStringArray(R.array.Best_list); int[] arrDividers = {0,5,10,18,24,31,37,46}; int[] arrSectors = {1,4,6,7,8,9,11,12,13,14,15,17,19,23,25,27,29,39,43,49,50,51,52}; for(int i=0; i<=55 ; i++){ boolean flag = false; for(int j=0; j<=22; j++) { if (i == arrSectors[j]) { ObjectActivityBest ob = new ObjectActivityBest("false", temp[i], i, "sector"); mDatabase.child("users").child(user.getUid()).child("list Best").child(ob.name+"").setValue(ob); flag = true; } } for(int j=0; j0&&e.orderNum=11 && e.orderNum<=15){ countchecks+=2; }else{ countchecks++; } } } } setIconPercent(countchecks); } pBar.setVisibility(View.INVISIBLE); } @Override public void onCancelled(DatabaseError databaseError) { } }); // launchAutomaticHint(); } }, 0); } private void setIconPercent(int countchecks) { TypedArray imgs = getResources().obtainTypedArray(R.array.random_imgs); it = men.findItem(R.id.action_check); it.setIcon(ContextCompat.getDrawable(getApplicationContext(), imgs.getResourceId(countchecks/5, -1))); imgs.recycle(); if(countchecks%5==0){ it = men.findItem(R.id.action_text); it.setVisible(false); it = men.findItem(R.id.action_check); it.setVisible(true); }else{ it = men.findItem(R.id.action_check); it.setVisible(false); it = men.findItem(R.id.action_text); it.setVisible(true); it.setTitle(countchecks+"%"); } } public void makeTextLong(String s){ Context context = getApplicationContext(); Toast.makeText(context,s,Toast.LENGTH_LONG).show(); } public Menu getMen() { return men; } public MenuItem getIt() { return it; } public String getNumOfRows() { return numOfRows; } @Override public boolean onPrepareOptionsMenu(Menu menu) { // If the nav drawer is open, hide action items related to the content view getMenuInflater().inflate(R.menu.percentage_menu, menu); men = menu; return super.onPrepareOptionsMenu(menu); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(com.nadav.weddingcalc.R.menu.percentage_menu, menu); men = menu; return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); android.app.Fragment fragment = null; //noinspection SimplifiableIfStatement switch (id) { case android.R.id.home: NavUtils.navigateUpFromSameTask(this); // try{ // this.finish(); // }catch(Exception e){ // makeTextLong("crash"); // } return true; default: return super.onOptionsItemSelected(item); } } } 

您有这个空指针,因为您没有为片段维护堆栈。 当您恢复活动时,片段的实例会被破坏,并且不会重新初始化。 因此,您需要维护片段堆栈并检查片段堆栈是否为空