导航抽屉单击停止应用程序并返回启动页面

时间:2017-11-10 01:02:24

标签: android

我是java和android开发的新手,只有3个应用程序。

问题: 当我点击导航标签将我带到另一个活动时,它说不幸的是应用已经停止并将我带回启动页面。

我已经考虑过的事情: Grandle Console不会引用代码中的任何错误 Grandle Console不会引用任何遗漏的依赖项。 我确保所有版本都是正确的。 我没有使用折旧方法。

如果我使用按钮创建自己的导航,该应用程序有效,这个简单的功能将真正简化应用程序。它是一个远足登录gps与日记条目的应用程序,同时使用精细的位置映射远足。

这是我用导航抽屉建造的第一个。我已经花了几天时间单独解决这个问题,并最终决定寻求帮助,希望有人可以提供帮助。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    String myurl="file:///android_asset/index.html";
    WebView view=(WebView) this.findViewById(R.id.webView);
    view.getSettings().setJavaScriptEnabled(true);
    view.loadUrl(myurl);

    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.addDrawerListener(toggle);
    toggle.syncState();

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

@Override
public void onBackPressed() {
    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    if (drawer.isDrawerOpen(GravityCompat.START)) {
        drawer.closeDrawer(GravityCompat.START);
    } else {
        super.onBackPressed();
    }
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, 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();

    //noinspection SimplifiableIfStatement
    if (id == R.id.activity_main) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}




@SuppressWarnings("StatementWithEmptyBody")
@Override
public boolean onNavigationItemSelected(MenuItem item) {
    // Handle navigation view item clicks here.
    int id = item.getItemId();
    switch (id){
        case R.id.activity_main:
            Intent h= new Intent(MainActivity.this,MainActivity.class);
            startActivity(h);
            break;

        case R.id.activity_entry:
            Intent e= new Intent(MainActivity.this,EntryActivity.class);
            startActivity(e);
            break;

        case R.id.activity_list:
            Intent l= new Intent(MainActivity.this,ListActivity.class);
            startActivity(l);
            break;

        case R.id.activity_bluetooth:
            Intent b= new Intent(MainActivity.this,BluetoothActivity.class);
            startActivity(b);
            break;
        }   


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

1 个答案:

答案 0 :(得分:1)

首先,如果您输入错误日志,那么获得快速帮助将非常有帮助。但是,作为一名新开发者,

  • Gradle是一个构建系统,它实际上是根据构建你的项目 配置(管理版本,工件,依赖项等)。
  • Gradle Console不会显示错误,您可以从Android Monitor / Logcat找到它。
  • 你可能会错误地做一些常见的错误
    • 清单中的活动声明。
    • 寻找不属于当前布局的资源ID。
    • 空值例外。