2016-05-26 17 views
0

:ここにClassNotFoundException android.preference.ListView

Process: com.fedorparetsky.parcare, PID: 25574 
    android.view.InflateException: Binary XML file line #31: Error inflating class ListView 
    .... 
    Caused by: java.lang.ClassNotFoundException: Didn't find class "android.preference.ListView" on path: DexPathList[[zip file "/data/app/com.fedorparetsky.parcare-1/base.apk"],nativeLibraryDirectories=[/data/app/com.fedorparetsky.parcare-1/lib/arm, /vendor/lib, /system/lib]] 

があるpreferences.xmlと呼ばれる、PreferencesFragmentのためのXMLです:

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

    <PreferenceCategory 
     android:title="General"> 
    </PreferenceCategory> 

    <PreferenceCategory 
     android:title="Account"> 

     <Preference android:title="Change Email" 
      android:key="@string/changeEmailButton" 
      android:summary="Change Email Summary"/> 
     <Preference android:title="Change Password" 
      android:key="@string/changePasswordButton" 
      android:summary="Change Password Summary"/> 

    </PreferenceCategory> 

    <PreferenceCategory 
     android:title="About"> 
     <Preference 
      android:title="Our Website"> 
      <intent android:action="android.intent.action.VIEW" 
       android:data="http://parcare.me" /> 
     </Preference> 

    </PreferenceCategory> 

    <ListView 
     android:id="@android:id/list" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_marginTop="5dp" /> 

</PreferenceScreen> 

はSettingsFragment.java、断片のコードである:

import android.os.Bundle; 
import android.preference.PreferenceFragment; 

import com.fedorparetsky.parcare.R; 


public class SettingsFragment extends PreferenceFragment { 


@Override 
public void onCreate(final Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    addPreferencesFromResource(R.xml.preferences); 


} 

そして、ここでは、私がフラグメントをinfalteときに私は呼んで:

fm.beginTransaction().replace(R.id.content_frame, new SettingsFragment()).commit(); 

私はこのエラーを乗り越えることができるように変更する必要がありますか?

答えて

0

ListViewはpreferencesレイアウトの一部になる正当なコントロールではありません。

あなたは好みのレイアウトで次のコントロールを持つことができます。

  • CheckBoxPreference
  • ListPreference
  • EditTextPreference
+0

この記事を説明してください:http://stackoverflow.com/questions/ 22112966/with-id-attribute-android-r-id-list-is-a-listview-cのようなcontent-has-view-with-id属性があります。 – fedorp1

+0

XMLにListViewを挿入する前に、私はそれを取得していました... – fedorp1

+0

リンクごとに、それは好みではなくフラグメントでした。チョークとチーズ。 – t0mm13b

0

ViewPreferenceをこのようなXMLに組み合わせることはできません。どちらか一方を選んでください。

0

設定画面内でListViewを使用しないでください。意味がありません。私はそれがここの問題だと思う。同様のことが必要なら、ListPreferenceを使うべきです。 EDIT:でframeLayoutとリストビューで

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior" 
    tools:context=".Activities.PreferenceActivity" 
    tools:showIn="@layout/activity_preference"> 
    <FrameLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:id="@+id/FLPersInfo" 
     android:layout_weight="1"/> 
    <ListView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:background="@color/colorAccent" 
     android:layout_weight="1"/> 
</LinearLayout> 

好みの画面:あなたは好みに活動してリストビューを持ちたい場合は、このような何かを行うことができます。

関連する問題