简体   繁体   English

使用导航抽屉时尝试从空对象引用上的字段'int android.support.v4.app.Fragment.mContainerId'读取

[英]Attempt to read from field 'int android.support.v4.app.Fragment.mContainerId' on a null object reference when using Navigation Drawer

Below is my StackTrace of the error that I am getting in Android Studio when navigation using my navigation drawer. 下面是我在使用导航抽屉导航时在Android Studio中获得的错误的StackTrace。 This is a new error as it hasn't happened me before. 这是一个新错误,因为它之前没有发生过。 So I am not sure what if anything I've changed. 所以我不确定如果我改变了什么。

08-11 23:16:37.823 15951-15951/com.example.aids.a09application
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.aids.a09application, PID: 15951
java.lang.NullPointerException: Attempt to read from field 'int android.support.v4.app.Fragment.mContainerId' on a null object reference
at android.support.v4.app.FragmentTransition.addToFirstInLastOut(FragmentTransition.java:1017)
at android.support.v4.app.FragmentTransition.calculateFragments(FragmentTransition.java:976)
at android.support.v4.app.FragmentTransition.startTransitions(FragmentTransition.java:95)
at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2146)
at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2103)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2013)
at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:710)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6692)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1468)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1358)

Below is the Java Class where I have my Fragment Transactions for my Navigation Drawer. 下面是Java类,我的导航抽屉有片段交易。

public class MainActivity extends AppCompatActivity {
    DrawerLayout drawerLayout;
    Toolbar toolbar;
    ActionBarDrawerToggle actionBarDrawerToggle;
    FragmentTransaction fragmentTransaction;
    NavigationView navigationView;
    Intent intent;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);

        actionBarDrawerToggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar, R.string.drawer_open, R.string.drawer_close);

        drawerLayout.addDrawerListener(actionBarDrawerToggle);
        fragmentTransaction = getSupportFragmentManager().beginTransaction();
        fragmentTransaction.add(R.id.main_container, new HomeFragment());
        fragmentTransaction.commit();
        getSupportActionBar().setTitle("Drift Fan");
        navigationView = (NavigationView) findViewById(R.id.navigation_view);
        navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(MenuItem item) {
                switch (item.getItemId()) {
                    case R.id.Home:
                        fragmentTransaction = getSupportFragmentManager().beginTransaction();
                        fragmentTransaction.replace(R.id.main_container, new HomeFragment());
                        fragmentTransaction.commit();
                        getSupportActionBar().setTitle("Home Fragment");
                        item.setCheckable(true);
                        drawerLayout.closeDrawers();
                        break;
                    case R.id.my_account:
                        fragmentTransaction = getSupportFragmentManager().beginTransaction();
                        fragmentTransaction.replace(R.id.main_container, new myAccountFragment());
                        fragmentTransaction.commit();
                        getSupportActionBar().setTitle("My Account");
                        item.setCheckable(true);
                        drawerLayout.closeDrawers();
                        break;
                    case R.id.nav_about:
                        fragmentTransaction = getSupportFragmentManager().beginTransaction();
                        fragmentTransaction.replace(R.id.main_container, new AboutDriftingFragment());
                        fragmentTransaction.commit();
                        getSupportActionBar().setTitle("About Drifting");
                        item.setCheckable(true);
                        drawerLayout.closeDrawers();
                        break;
                    case R.id.nav_shop:
                        fragmentTransaction = getSupportFragmentManager().beginTransaction();
                        fragmentTransaction.replace(R.id.main_container, new ShopFragment());
                        fragmentTransaction.commit();
                        getSupportActionBar().setTitle("Shop");
                        item.setCheckable(true);
                        drawerLayout.closeDrawers();
                        break;
                    case R.id.nav_news:
                        fragmentTransaction = getSupportFragmentManager().beginTransaction();
                        fragmentTransaction.replace(R.id.main_container, new NewsFragment());
                        fragmentTransaction.commit();
                        getSupportActionBar().setTitle("News");
                        item.setCheckable(true);
                        drawerLayout.closeDrawers();
                        break;
                    case R.id.nav_media:
                        intent = new Intent(MainActivity.this, media_main.class);
                        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                        MainActivity.this.startActivity(intent);
                        break;
                    case R.id.nav_results:
                        fragmentTransaction = getSupportFragmentManager().beginTransaction();
                        fragmentTransaction.replace(R.id.main_container, new ResultsFragment());
                        fragmentTransaction.commit();
                        getSupportActionBar().setTitle("Results");
                        item.setCheckable(true);
                        drawerLayout.closeDrawers();
                        break;

                }


                return false;
            }

        });

    }

    @Override
    protected void onPostCreate(@Nullable Bundle savedInstanceState) {
        super.onPostCreate(savedInstanceState);
        actionBarDrawerToggle.syncState();
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        MenuInflater menuInflater = getMenuInflater();
        menuInflater.inflate(R.menu.drawer_menu, menu);
        return true;



    }
}

I have had the same issue but when i extend from v4.app.Fragment class. 我有同样的问题,但当我从v4.app.Fragment类扩展。 instead of android.app.Fragment it is working fine without crashes. 而不是android.app.Fragment它没有崩溃工作正常。

also see this it has some solutions that you can try. 也看到这个它有一些解决方案,你可以试试。

In your second case, try changing: 在第二种情况下,尝试更改:

new myAccountFragment() 新的myAccountFragment()

to

new MyAccountFragment() 新的MyAccountFragment()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 NullPointerException:尝试从空对象引用上的字段'int android.app.Fragment.mContainerId'读取 - NullPointerException: Attempt to read from field 'int android.app.Fragment.mContainerId' on a null object reference 恢复到app时,尝试在空对象引用上写入字段'int android.app.Fragment.mNextAnim' - Attempt to write to field 'int android.app.Fragment.mNextAnim' on a null object reference when resume to app 哪个引用变量为null-尝试从null对象引用上的字段'android.os.Handler android.support.v4.ama'中读取 - which reference variable is null - Attempt to read from field 'android.os.Handler android.support.v4.a.m.a' on a null object reference Android ViewGroup 崩溃:尝试从空对象引用上的字段“int android.view.View.mViewFlags”读取 - Android ViewGroup crash: Attempt to read from field 'int android.view.View.mViewFlags' on a null object reference 空指针异常,“尝试从空对象引用上的字段读取” - Null pointer exception, "Attempt to read from field on a null object reference" 空对象引用上的void android.support.v4.app.Fragment.setMenuVisibility(boolean)' - void android.support.v4.app.Fragment.setMenuVisibility(boolean)' on a null object reference Kotlin在android.support.v4.app.Fragment null对象引用中直接访问Button - Kotlin direct access to Button in android.support.v4.app.Fragment null object reference 如何修复在 null object 参考上调用虚拟方法 'android.view.View androidx.fragment.app.FragmentActivity.findViewById(int)' 的尝试? - How to fix attempt to invoke virtual method 'android.view.View androidx.fragment.app.FragmentActivity.findViewById(int)' on a null object reference? 尝试在空对象引用上调用虚拟方法“android.support.v7.app.AlertDialog android.support.v7.app.AlertDialog$Builder.create()” - Attempt to invoke virtual method 'android.support.v7.app.AlertDialog android.support.v7.app.AlertDialog$Builder.create()' on a null object reference 尝试从空对象引用中读取字段“ GlyphRun.color” - Attempt to read from field 'GlyphRun.color' on a null object reference
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM