2012-10-03 3 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 please? – Swayam

+0

ok 로그를 추가했습니다. – Timberwolf

답변

1

내가 변경 :

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

에 :

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

내 문제가 해결되었습니다. – Timberwolf

관련 문제