2017-06-15 47 views
-2

我有一個導航抽屜,當我點擊其中的一個物品時,它應該打開其他活動。所以我做了一個開關,並沒有得到任何錯誤。仍然當我啓動應用程序時,它不斷崩潰。需要任何幫助,我可以得到! Java是低於當點擊導航抽屜中的物品時打開其他活動

package com.gfo.enexis; 

import android.app.AlertDialog; 
import android.content.DialogInterface; 
import android.content.Intent; 
import android.support.annotation.IdRes; 
import android.support.design.widget.NavigationView; 
import android.support.v4.widget.DrawerLayout; 
import android.support.v7.app.ActionBarDrawerToggle; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.support.v7.widget.Toolbar; 
import android.util.Log; 
import android.view.KeyEvent; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.EditText; 
import android.widget.ListView; 
import android.widget.TextView; 
import android.widget.Toast; 

import org.w3c.dom.Text; 

import java.util.ArrayList; 
import java.util.List; 

import static android.R.attr.id; 
import static android.R.attr.start; 
import static android.R.id.edit; 
import static android.R.id.list; 
import static com.gfo.enexis.R.id.button; 
import static com.gfo.enexis.R.id.lv1; 
import static com.gfo.enexis.R.id.nav_acount; 

public class MainActivity extends AppCompatActivity { 

private DrawerLayout mDrawerLayout; 
private ActionBarDrawerToggle mToggle; 

private Toolbar mToolbar; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    mToolbar = (Toolbar) findViewById(R.id.nav_action); 
    setSupportActionBar(mToolbar); 

    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout); 
    mToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.open, R.string.close); 

    mDrawerLayout.addDrawerListener(mToggle); 
    mToggle.syncState(); 

    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

    registerClickCallBack(); 
    OnNavigationItemSelected(); 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 

    if (mToggle.onOptionsItemSelected(item)) { 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 


public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
     exitByBackKey(); 

     return true; 
    } 
    return super.onKeyDown(keyCode, event); 
} 

protected void exitByBackKey() { 

    AlertDialog alertbox = new AlertDialog.Builder(this) 
      .setMessage("Weet u zeker dat u wilt uitloggen?") 
      .setPositiveButton("Log uit", new DialogInterface.OnClickListener() { 

       // do something when the button is clicked 
       public void onClick(DialogInterface arg0, int arg1) { 

        finish(); 
        //close(); 


       } 
      }) 
      .setNegativeButton("Nee", new DialogInterface.OnClickListener() { 

       // do something when the button is clicked 
       public void onClick(DialogInterface arg0, int arg1) { 
       } 
      }) 
      .show(); 

} 

EditText NotitieEt; 
ListView ListNote; 
ArrayList<String> lv = new ArrayList<>(); 


public void NoteAdd(View view) { 
    ListNote = (ListView) findViewById(lv1); 
    NotitieEt = (EditText) findViewById(R.id.notitie); 

    String note1 = NotitieEt.getText().toString(); 
    if (lv.contains(note1)) { 
     Toast.makeText(this, "Notitie bestaat al", Toast.LENGTH_LONG).show(); 
    } else if (note1 == null || note1.trim().equals("")) { 
     Toast.makeText(this, "Imput can't be empty", Toast.LENGTH_LONG).show(); 
    } else { 
     lv.add(note1); 
     ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, lv); 
     ListNote.setAdapter(adapter); 
     ((EditText) findViewById(R.id.notitie)).setText(""); 
    } 


} 

private void registerClickCallBack() { 
    ListNote = (ListView) findViewById(lv1); 
    ListNote.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> paret, View viewClicked, int position, long id) { 
      lv.remove(position); 
      ArrayAdapter<String> adapter = new ArrayAdapter<>(MainActivity.this, android.R.layout.simple_list_item_1, lv); 
      ListNote.setAdapter(adapter); 
     } 
    }); 
} 

MenuItem item; 


public boolean OnNavigationItemSelected() { 
    int id = item.getItemId(); 

    switch (id) { 

     case R.id.nav_acount: 
      Intent i = new Intent(MainActivity.this, DashBoard1.class); 
      startActivity(i); 
      break; 
     case R.id.nav_dashboard: 
      Intent o = new Intent(MainActivity.this, Dashboard2.class); 
      startActivity(o); 
    } 
    return true; 
} 

}

這些都是錯誤的我越來越:

了java.lang.RuntimeException:無法啓動活動ComponentInfo {com.gfo.enexis/com.gfo .enexis.MainActivity}:顯示java.lang.NullPointerException:嘗試調用接口方法 '詮釋android.view.MenuItem.getItemId()' 上的空對象引用

引起:java.lang.NullPointerException:試圖調用空對象的接口方法'int android.view.MenuItem.getItemId()'參考

+0

請粘貼記錄的錯誤 – fn5341

+0

貼在這裏,我加入他們後 – Meikiem

+0

錯誤我不明白爲什麼您直接從R.java導入。 您可以使用findViewById查看視圖,並將它們轉換爲它們自己的組件類型。 –

回答

0

我認爲你的問題是你還沒有註冊導航在onCreate()中的抽屜。 使用此:

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

此外,爲了處理導航抽屜點擊,覆蓋的方法:

onNavigationItemSelected(MenuItem item)