2012-10-03 23 views
-1

以下是我的onOptionsItemSelected回調代碼。我有與該項目的問題與ID R.id.up使用選項菜單時出現異常

@Override 
public boolean onOptionsItemSelected(MenuItem item) 
{ 
    switch (item.getItemId()) 
    { 
    case R.id.can: 
     can = false; 
     sel = false; 
     FileName.setEnabled(false); 
     FileName.setText(""); 
     String[] values = new String[] {"Open", "Save (As)", "New"}; 
     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, values); 
     setListAdapter(adapter); 
     return true; 
    case R.id.sel: 
     can = false; 
     sel = false; 
     SelDir = CurDir; 
     if (SelDir != null) 
     { 
     try 
     { 
      file = new File(SelDir, (FileName.getText().toString() + ".txt")); 
      w = new FileWriter(file); 
      writer = new BufferedWriter(w); 
      writer.write(TextEditor.getText().toString()); 
      writer.close(); 
     } 
     catch (Exception e) 
     { 
      Toast.makeText(this, "Error:\n" + e.getMessage().toString(), Toast.LENGTH_LONG).show(); 
     } 
     } 
     else 
     { 
      Toast.makeText(this, "Error:\n" + "Please Select A Directory", Toast.LENGTH_LONG).show(); 
     } 
     values = new String[] {"Open", "Save (As)", "New"}; 
     adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, values); 
     setListAdapter(adapter); 
     String temp = FileName.getText().toString() + ".txt"; 
     FileName.setText(SelDir + "/" + temp); 
     FileName.setEnabled(false); 
     SelDir = null; 
     return true; 
    case R.id.up: 
     if (CurDir != homeDir) 
     { 
      CurDir = CurDir.substring(0, CurDir.lastIndexOf("/") - 1); 
      dir = new File(CurDir); 
      values = dir.list(filter); 
      adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, values); 
      setListAdapter(adapter); 
     } 
     return true; 
    default: 
     return super.onOptionsItemSelected(item); 
    } 
} 

當我按項目R.id.up我的應用程序強制關閉。其他兩項工作正常。我找不到我的代碼的問題。

編輯: 的logcat不同之處:

10-03 11:57:45.952: E/AndroidRuntime(18460): FATAL EXCEPTION: main 
10-03 11:57:45.952: E/AndroidRuntime(18460): java.lang.NullPointerException 
10-03 11:57:45.952: E/AndroidRuntime(18460): at java.util.Arrays$ArrayList.<init>(Arrays.java:47) 
10-03 11:57:45.952: E/AndroidRuntime(18460): at java.util.Arrays.asList(Arrays.java:169) 
10-03 11:57:45.952: E/AndroidRuntime(18460): at android.widget.ArrayAdapter.<init>(ArrayAdapter.java:125) 
10-03 11:57:45.952: E/AndroidRuntime(18460): at com.IPP.EZPadd.EZPaddActivity.onOptionsItemSelected(EZPaddActivity.java:102) 
10-03 11:57:45.952: E/AndroidRuntime(18460): at android.app.Activity.onMenuItemSelected(Activity.java:2205) 
10-03 11:57:45.952: E/AndroidRuntime(18460): at com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:823) 
10-03 11:57:45.952: E/AndroidRuntime(18460): at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:143) 
10-03 11:57:45.952: E/AndroidRuntime(18460): at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:855) 
10-03 11:57:45.952: E/AndroidRuntime(18460): at com.android.internal.view.menu.IconMenuView.invokeItem(IconMenuView.java:532) 
10-03 11:57:45.952: E/AndroidRuntime(18460): at com.android.internal.view.menu.IconMenuItemView.performClick(IconMenuItemView.java:122) 
10-03 11:57:45.952: E/AndroidRuntime(18460): at android.view.View$PerformClick.run(View.java:9081) 
10-03 11:57:45.952: E/AndroidRuntime(18460): at android.os.Handler.handleCallback(Handler.java:587) 
10-03 11:57:45.952: E/AndroidRuntime(18460): at android.os.Handler.dispatchMessage(Handler.java:92) 
10-03 11:57:45.952: E/AndroidRuntime(18460): at android.os.Looper.loop(Looper.java:130) 
10-03 11:57:45.952: E/AndroidRuntime(18460): at android.app.ActivityThread.main(ActivityThread.java:3686) 
10-03 11:57:45.952: E/AndroidRuntime(18460): at java.lang.reflect.Method.invokeNative(Native Method) 
10-03 11:57:45.952: E/AndroidRuntime(18460): at java.lang.reflect.Method.invoke(Method.java:507) 
10-03 11:57:45.952: E/AndroidRuntime(18460): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867) 
10-03 11:57:45.952: E/AndroidRuntime(18460): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625) 
10-03 11:57:45.952: E/AndroidRuntime(18460): at dalvik.system.NativeStart.main(Native Method) 
+2

請提供一個崩潰日誌,而不是檢查的結果lastIndexOf可能會很棘手,在某些情況下,substring方法可能會像這樣結束:substring(0,-1 )或子串(0,-2)我認爲。但是我們需要崩潰日誌,如果我們想幫你 –

+0

LogCat好嗎? – Swayam

+0

好的,我添加了日誌。 – Timberwolf

回答

1

我改變:

CurDir = CurDir.substring(0, CurDir.lastIndexOf("/") - 1); 

到:

CurDir = CurDir.substring(0, CurDir.lastIndexOf("/")); 
+0

這解決了我的問題。 – Timberwolf