2013-07-30 4 views
0

어떤 이유로 든 버튼 중 하나를 클릭하면 내 ActionBar가 충돌합니다. 여기에 optionsSelectMenu에 대한 코드입니다 :안드로이드 충돌시 ABS 선택

public boolean onOptionsItemSelected(MenuItem item) 
{ 
    switch (item.getItemId()) 
    { 
    case R.id.refresh_button_actionbar: 
     if (this.frag instanceof DashboardFragment) 
      dashboardFrag.refresh(); 
     break; 
    default: 
     return false; 
    } 
    return true; 
} 

는 그리고 여기에 로그 캣입니다 : 내가 잘못 무엇

07-30 19:17:52.981: E/AndroidRuntime(1358): FATAL EXCEPTION: main 
07-30 19:17:52.981: E/AndroidRuntime(1358): java.lang.NullPointerException 
07-30 19:17:52.981: E/AndroidRuntime(1358):  at com.android.internal.view.menu.MenuItemImpl.toString(MenuItemImpl.java:496) 
07-30 19:17:52.981: E/AndroidRuntime(1358):  at java.lang.StringBuilder.append(StringBuilder.java:202) 
07-30 19:17:52.981: E/AndroidRuntime(1358):  at com.actionbarsherlock.app.SherlockFragmentActivity.onMenuItemSelected(SherlockFragmentActivity.java:201) 
07-30 19:17:52.981: E/AndroidRuntime(1358):  at com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:980) 
07-30 19:17:52.981: E/AndroidRuntime(1358):  at com.android.internal.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:735) 
07-30 19:17:52.981: E/AndroidRuntime(1358):  at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:149) 
07-30 19:17:52.981: E/AndroidRuntime(1358):  at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:874) 
07-30 19:17:52.981: E/AndroidRuntime(1358):  at com.android.internal.view.menu.ActionMenuView.invokeItem(ActionMenuView.java:547) 
07-30 19:17:52.981: E/AndroidRuntime(1358):  at com.android.internal.view.menu.ActionMenuItemView.onClick(ActionMenuItemView.java:115) 
07-30 19:17:52.981: E/AndroidRuntime(1358):  at android.view.View.performClick(View.java:4204) 
07-30 19:17:52.981: E/AndroidRuntime(1358):  at android.view.View$PerformClick.run(View.java:17355) 
07-30 19:17:52.981: E/AndroidRuntime(1358):  at android.os.Handler.handleCallback(Handler.java:725) 
07-30 19:17:52.981: E/AndroidRuntime(1358):  at android.os.Handler.dispatchMessage(Handler.java:92) 
07-30 19:17:52.981: E/AndroidRuntime(1358):  at android.os.Looper.loop(Looper.java:137) 
07-30 19:17:52.981: E/AndroidRuntime(1358):  at android.app.ActivityThread.main(ActivityThread.java:5041) 
07-30 19:17:52.981: E/AndroidRuntime(1358):  at java.lang.reflect.Method.invokeNative(Native Method) 
07-30 19:17:52.981: E/AndroidRuntime(1358):  at java.lang.reflect.Method.invoke(Method.java:511) 
07-30 19:17:52.981: E/AndroidRuntime(1358):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
07-30 19:17:52.981: E/AndroidRuntime(1358):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
07-30 19:17:52.981: E/AndroidRuntime(1358):  at dalvik.system.NativeStart.main(Native Method) 

어떤 아이디어? 조각 비교와 관련이 있다고 생각합니다. 또한 주목할 것은, 코드를 "return true"로 설정했을 때 (아무것도 리턴하지 않고 true를 리턴하는 것처럼), 활동을 다시 시작한다는 것입니다. 이것은 의도 된 행동입니까? 그렇다면 어떻게해야합니까? 여기

내 수입은 다음과 같습니다

당신은 안드로이드의 메뉴 및 MenuInflater를 사용하고 있지만, ActionBarSherlock의와 함께 제공되는 클래스를 사용한다
import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentTransaction; 

import com.actifio.android.R; 

import com.actionbarsherlock.app.ActionBar; 
import com.actionbarsherlock.app.ActionBar.Tab; 
import com.actionbarsherlock.app.ActionBar.TabListener; 
import com.actionbarsherlock.app.SherlockFragmentActivity; 
import com.actionbarsherlock.view.Menu; 
import com.actionbarsherlock.view.MenuInflater; 
import com.actionbarsherlock.view.MenuItem; 

답변

1

. 자세한 explanation.Your 문제에 대한이 thread에 주어진 대답은 해결해야

import com.actionbarsherlock.view.Menu; 
import com.actionbarsherlock.view.MenuInflater; 

확인이 그들을 위해 가져 오기가 있는지 확인하십시오. 다음에이 유형의 질문이 이미 요청되었는지 확인하십시오.

는 편집 :

나는 당신의 문제를 해결하기 위해 비틀기 (매우 깨끗하지만 작동하지 않음)를 내놓았다. Workbarsharlock 프로젝트가 작업 공간에 있기를 바랍니다.

try 
     { 
      if (BuildConfig.DEBUG) Log.d(TAG, "[onMenuItemSelected] featureId: " + featureId + ", item: " + item); 
     }catch(Exception e) 
     { 
      Log.d(TAG,"Exception"); 
     } 

귀하의 문제는 해결해야합니다, 파일 SharlockFragmentActivity.java을 찾을 패키지 com.actionbarsharlock.app로 이동을 열고 201 라인으로 이동 다음 줄 주석 이제 (CMD/CTRL + L은, 행 번호를 입력) .

+0

내가 사용하고있는 수입품은 액션 바 셜록에서 가져온 것입니다. 그것들은 정확히 일치합니다. –

+0

나는 이것을 얻지 못한다. 로그 cat 출력을 봅니다 .'java.lang.NullPointerException 07-30 19 : 17 : 52.981 : E/AndroidRuntime (1358) : at com.android.internal.view.menu.MenuItemImpl.toString (MenuItemImpl.java : 496)'sharlock 가져 오기를 사용했다면 오류는'com.actionbarsharlock.internal.view.menu.MenuItemImpl' 클래스에서 발생합니다. 코드를 다시 확인하십시오. 두 가지를 모두 가져 왔지만 안드로이드를 사용하는 것이 두렵습니다. –

+0

메인 스레드에 가져 오기를 추가했습니다. 그것들은 제가 사용하고있는 유일한 것들입니다 :/기본 안드로이드를 사용하지 않습니다. getSupportActionBar() 액션 바를 인스턴스화하고, getSupportMenuInflater()를 사용하여 인플레이터를 인스턴스화합니다. –