清除内容视图

Clearing a content view

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

第一张图片显示了我的应用程序的启动,所有 fields/buttons 都是棘手的。第二张图片显示了当我 select 导航栏中的项目时发生的情况。被调用的视图只包含名为 "SCAN" 的按钮,但它只是将这个新视图与以前的视图组合在一起。

这是第一个的相关代码 view/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() class

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;
    }
}

我认为我的问题在于此 class。经过昨天的谷歌搜索,.removeAllViews() 方法似乎是我所需要的。但是我不确定哪个 RelativeLayout 更清楚,MainActivity() 还是 MainScreen()。

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

提前致谢。

无需删除片段内的主 activity 视图 只需简单地添加你的片段就可以了