清除内容视图

时间:2016-08-03 10:36:03

标签: java android nullpointerexception navigationbar setcontentview

首先,这可能是一个两部分问题。 所以我开始在我的应用程序中使用导航栏并使用此栏更改视图导致我的问题。

This is the first screen of my app

This is what happens when I select the first option out of the navigation bar menu

第一张图片显示了我的应用的启动,所有字段/按钮都是难以处理的。第二张图显示了从导航栏中选择项目时会发生什么。被调用的视图只包含一个名为“SCAN”的按钮,但它只是将这个新视图与前一个视图结合起来。

以下是第一个视图/ MainActivity中的相关代码

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

 });

        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
                this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
        drawer.setDrawerListener(toggle);
        toggle.syncState();

        NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
        navigationView.setNavigationItemSelectedListener(this);
    }

在相同的MainActivity中,以下是处理导航栏的代码。 Nav_Frame是在content_main.xml中声明的FrameLayout。

public boolean onNavigationItemSelected(MenuItem item) 
    {
        // Handle navigation view item clicks here.
        int id = item.getItemId();
        android.app.FragmentManager FragManager = getFragmentManager();
        if (id == R.id.nav_Menu) {
            FragManager.beginTransaction().replace(R.id.Nav_Frame,new MainScreen()).commit();
        } else if (id == R.id.nav_gallery) {

        } else if (id == R.id.nav_slideshow) {

        } else if (id == R.id.nav_manage) {

        } else if (id == R.id.nav_share) {

        } else if (id == R.id.nav_send) {

        }

        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        drawer.closeDrawer(GravityCompat.START);
        return true;
    }

这是导航栏调用的MainScreen()类

public class MainScreen extends Fragment
{
    View MyView;
    Button Scan;
    RelativeLayout RelLay;
    MainActivity MA= new MainActivity();
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    {
        RelLay=(RelativeLayout)MA.findViewById(R.id.RelativeLayout);
        RelLay.removeAllViews();
        MyView = inflater.inflate(R.layout.home_screen,container,false);
        Scan=(Button)MyView.findViewById(R.id.btnScan);
        return MyView;
    }
}

我认为我的问题是坐在这堂课上。在昨天谷歌搜索后,.removeAllViews()方法似乎是我需要的。但是我不确定哪个RelativeLayout是clear,MainActivity()还是MainScreen()。

另一个问题是RelLay行,使应用程序崩溃,给我一个NullPointerException。

提前致谢。

1 个答案:

答案 0 :(得分:0)

无需删除片段内主要活动的视图 只需添加您的片段即可使用