2015-01-12 3 views
1

SO 스레드 here 및 Android 블로그 게시물 here을 읽은 후 AppCompat V7 : 21에 새로 추가 된 도구 모음 기능을 사용해야합니다. 내가 exacctly 내 레이아웃에 블로그 게시물에서 도구 모음 조각을 복사 :AppCompat v7 Toolbar "Error inflating class class <unknown>"

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.blabla.PrefActivity}: android.view.InflateException: Binary XML file line #8: Error inflating class <unknown>  

흥미롭게도, 내가이 줄을 제거하는 경우 : 안드로이드 :

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

    <android.support.v7.widget.Toolbar     <- Line 8 
     android:layout_height="wrap_content" 
     android:layout_width="match_parent" 
     android:minHeight="?attr/actionBarSize" 
     app:theme="@style/ThemeOverlay.AppCompat.ActionBar" /> 

</LinearLayout>  

문제는 내가 얻을 수 있다는 것입니다?의 minHeight = "를 ATTR/actionBarSize "

작동합니다. 문제는 프로젝트 의존성 때문이 아닙니다. 그것은 내가 액세스 할 수없는 것 같습니다? actionBarSize 또는 colorPrimary와 같은 attr 요소

AppCompat 종속성을 이미 추가했다고 말할 필요는 없습니다. 그리고 활동은 PreferenceActivity에서 상속됩니다. 임의의 기준으로 문제를 해결하기 위해보고

dependencies { 
compile fileTree(include: ['*.jar'], dir: 'libs') 
compile 'com.android.support:support-v4:21.0.3' 
compile 'com.android.support:appcompat-v7:21.0.3' 
} 

herehere명 : 여기 내 Gradle을합니다. 하지만 지난 2 일 동안 무작위로 작동하지 않았습니다.

편집 :

여기 내 활동 (? ATTR /) 속성의 사용

public class PrefActivity extends PreferenceActivity { 

private Toolbar mToolbar; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    ViewGroup root = (ViewGroup) findViewById(android.R.id.content); 
    LinearLayout content = (LinearLayout) root.getChildAt(0); 
    LinearLayout toolbarContainer = (LinearLayout) View.inflate(this, R.layout.activity_prefs, null); 

    root.removeAllViews(); 
    toolbarContainer.addView(content); 
    root.addView(toolbarContainer); 

    mToolbar = (Toolbar) toolbarContainer.findViewById(R.id.toolbar); 
    selectResource(); 
    mToolbar.setNavigationIcon(R.drawable.abc_ic_ab_back_mtrl_am_alpha); 
    mToolbar.setNavigationOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      finish(); 
     } 
    }); 
} 
+0

완전한 레이아웃 파일을 표시 하시겠습니까? –

+0

'android : minHeight = "? android : attr/actionBarSize"' – VipulKumar

+0

@RobinDijkhof를 사용해보세요! – abedfar

답변

3

현재의 상황에 맞는 테마의 값으로 사용하는 것을 의미한다. 테마에 attr/actionBarSize 속성 값이 있는지 확인해야합니다. @ style/Theme.AppCompat의 테마를 사용하거나 상속 할 수 있습니다. 또는 값을 수동으로 설정하십시오.

+0

저는 dimens가 테마 값 또는 하드 코딩 된 값보다 나은 크기 값 저장에 대한 좋은 해결책이라고 생각합니다. –

관련 문제