2013-06-22 2 views
0

내가 사용하는 경우 : 4.x의에ActionBarSherlock의 충돌

06-22 18:18:23.384: D/SherlockFragmentActivity(3613): [onCreatePanelMenu] featureId: 0, menu: [email protected] 
06-22 18:18:23.384: D/ActionBarSherlock(3613): [dispatchCreateOptionsMenu] menu: [email protected] 
06-22 18:18:23.384: D/ActionBarSherlock(3613): [callbackCreateOptionsMenu] menu: [email protected] 
06-22 18:18:23.384: D/Watson(3613): [onCreatePanelMenu] featureId: 0, menu: [email protected] 
06-22 18:18:23.384: D/SherlockFragmentActivity(3613): [getSupportMenuInflater] 
06-22 18:18:23.384: D/ActionBarSherlock(3613): [getMenuInflater] 
06-22 18:18:23.384: D/ActionBarSherlock(3613): [getActionBar] 
06-22 18:18:23.384: D/AndroidRuntime(3613): Shutting down VM 
06-22 18:18:23.384: W/dalvikvm(3613): threadid=1: thread exiting with uncaught exception (group=0xaecd1908) 
06-22 18:18:23.384: E/AndroidRuntime(3613): FATAL EXCEPTION: main 
06-22 18:18:23.384: E/AndroidRuntime(3613): android.view.InflateException: Binary XML file line #29: Error inflating class <unknown> 
06-22 18:18:23.384: E/AndroidRuntime(3613):  at android.view.LayoutInflater.createView(LayoutInflater.java:613) 
06-22 18:18:23.384: E/AndroidRuntime(3613):  at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56) 

이 안드로이드 2.3에서 잘 작동하지만 :

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getSupportMenuInflater().inflate(R.menu.main_menu, menu); 
    com.actionbarsherlock.widget.SearchView searchView = new com.actionbarsherlock.widget.SearchView(Activity_TimetablePager.this); 
... 

시스템은 다음과 같은 로그와 충돌 이 경우에는 viewPager 활동에서 ActionBarSherlock 4.3.1을 사용하고 있습니다. 이것은 알려진 문제입니까?

답변

0

당신이 메뉴 XML 자원에 actionView 클래스를 설정하고 내부 그것의 (이미 생성) 인스턴스를 얻는 시도 되세요 (현재 내가 4.x에서의 기본 안드로이드 SearchView를 사용하여 해결 방법을 가지고) onCreateOptionsMenu()? 당신의 menu.xml 예를 들어

: 코드에서 다음

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item android:id="@+id/search_item" 
      android:title="@string/search" 
      android:icon="@drawable/ic_menu_search" 
      android:showAsAction="ifRoom|collapseActionView" 
      android:actionViewClass="com.actionbarsherlock.widget.SearchView" /> 

</menu> 

:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getSupportMenuInflater().inflate(R.menu.main_menu, menu); 

    MenuItem searchItem = menu.findItem(R.id.search_item); 
    SearchView searchView = (SearchView) searchItem.getActionView(); 

    ... 
} 

나는 내 응용 프로그램이 정확한 패턴을 사용하고 2 문제를 보지 못했다. x 또는 4.x 전화.

+0

기본적으로 나는 동일한 결과를 얻습니다. 예제 코드에서는 searchView = null이고 searchItem은 여전히 ​​괜찮습니다. 따라서 searchItem.getActionView가 문제인 것처럼 보입니다. –

+2

귀하의 의견은 다른 유사한 질문으로 이어집니다. 매니페스트 활동 정의에서 사용하는 경우 : android : theme = "@ style/Theme.Sherlock.Light", 그러면 작동합니다. 하지만 스타일을 사용하는 경우 :