2017-09-21 6 views
2

私はAndroid開発とJavaプログラミングの新機能です。私はListFragmentを使ってアプリケーションを作成しようとしていましたが(このアプリケーションには不要なように見えるかもしれませんが、大きなアプリケーションを開発するために、これをすぐにタブ付きのアクティビティに適用したいと思います)、残念ながらAndroidデバイスはそれが「停止しました」と述べている。何回のチュートリアルを行っても、問題を理解することはできません。ここで ListFragmentを持つシンプルなアプリケーションは "停止しました"

は、ここに私の logcat

09-21 20:34:18.825 4369-4369/com.clickme.list E/AndroidRuntime: FATAL EXCEPTION: main 
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.clickme.list/com.clickme.list.MainActivity}: android.view.InflateException: Binary XML file line #9: Error inflating class fragment 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2343) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2395) 
at android.app.ActivityThread.access$600(ActivityThread.java:162) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1364) 
at android.os.Handler.dispatchMessage(Handler.java:107) 
at android.os.Looper.loop(Looper.java:194) 
at android.app.ActivityThread.main(ActivityThread.java:5371) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:525) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600) 
at dalvik.system.NativeStart.main(Native Method) 
Caused by: android.view.InflateException: Binary XML file line #9: Error inflating class fragment 
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704) 
at android.view.LayoutInflater.rInflate(LayoutInflater.java:746) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:489) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:396) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:352) 
at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:289) 
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:139) 
at com.clickme.list.MainActivity.onCreate(MainActivity.java:11) 
at android.app.Activity.performCreate(Activity.java:5122) 
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1081) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2307) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2395)  
at android.app.ActivityThread.access$600(ActivityThread.java:162)  
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1364)  
at android.os.Handler.dispatchMessage(Handler.java:107)  
at android.os.Looper.loop(Looper.java:194)  
at android.app.ActivityThread.main(ActivityThread.java:5371)  
at java.lang.reflect.Method.invokeNative(Native Method)  
at java.lang.reflect.Method.invoke(Method.java:525)  
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)  
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)  
at dalvik.system.NativeStart.main(Native Method)  
Caused by: java.lang.RuntimeException: Content has view with id attribute 'android.R.id.list' that is not a ListView class 
at android.app.ListFragment.ensureList(ListFragment.java:402) 
at android.app.ListFragment.onViewCreated(ListFragment.java:203) 
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:866) 
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1035) 
at android.app.FragmentManagerImpl.addFragment(FragmentManager.java:1137) 
at android.app.Activity.onCreateView(Activity.java:4735) 
at android.support.v4.app.BaseFragmentActivityApi14.onCreateView(BaseFragmentActivityApi14.java:41) 
at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:75) 
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:680) 
at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)  
at android.view.LayoutInflater.inflate(LayoutInflater.java:489)  
at android.view.LayoutInflater.inflate(LayoutInflater.java:396)  
at android.view.LayoutInflater.inflate(LayoutInflater.java:352)  
at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:289)  
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:139)  
at com.clickme.list.MainActivity.onCreate(MainActivity.java:11)  
at android.app.Activity.performCreate(Activity.java:5122)  
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1081)  
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2307)  
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2395)  
at android.app.ActivityThread.access$600(ActivityThread.java:162)  
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1364)  
at android.os.Handler.dispatchMessage(Handler.java:107)  
at android.os.Looper.loop(Looper.java:194)  
at android.app.ActivityThread.main(ActivityThread.java:5371)  
at java.lang.reflect.Method.invokeNative(Native Method)  
at java.lang.reflect.Method.invoke(Method.java:525)  
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)  
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)  
at dalvik.system.NativeStart.main(Native Method)  

であるここに私のmain_activity.xml

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 

<fragment 
     android:id="@+id/myListFrag" 
     android:name="com.clickme.list.MyListFragment" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     tools:layout="@android:layout/simple_list_item_1" /> 

</LinearLayout> 

である私のfragment_my_list.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <ListView 
     android:id="@+id/myListView" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

</LinearLayout> 

であるここに私のMainActivity.java

です
public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
    } 
} 

そして、ここで私のMyListFragment.java

public class MyListFragment extends ListFragment implements AdapterView.OnItemClickListener { 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     return inflater.inflate(R.layout.fragment_my_list, container, false); 
    } 

    @Override 
    public void onActivityCreated(@Nullable Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 
     ArrayAdapter myListAdapter; 
     myListAdapter = ArrayAdapter.createFromResource(getActivity(), R.array.myList, android.R.layout.simple_list_item_1); 
     setListAdapter(myListAdapter); 
     getListView().setOnItemClickListener(this); 
    } 

    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     Toast.makeText(getActivity(), "Item: " + position, Toast.LENGTH_SHORT).show(); 
    } 
} 

は初心者を助けていただきありがとうございます。ちなみに、私はandroid.app.ListFragment;をインポートし、もう1つはインポートしません。これは明らかです。

+0

[不幸にもMyAppが停止しました。どうすれば解決できますか?](https://stackoverflow.com/questions/23353173/unfortunately-myapp-has-stopped-how-can-i-solve-this) –

+0

こんにちは。私はあなたのリンクを見て、それは非常に似ています(私はちょうどあなたから学んだスタックトレースの概念の点で、ありがとうございます)、それはListFragmentの問題に取り組んでいません。助けてくれてありがとう。 – DireNemesis74

+0

getListView()メソッドを投稿することができます – DroiDev

答えて

0

ListFragmentを使用する場合は、そのコンポーネントの契約を尊重する必要があります。つまり、FragmentListViewに正しく接続できるように、Androidフレームワークが既に同意したIDを使用する必要があります。下記の特別なIDがあります:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" > 

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

</LinearLayout> 

あなたの活動のxmlは問題ありません。 java.lang.RuntimeException:問題はListFragment

にに起因するあなたのフラグメントからXMLを膨らましようとしているから存在するコンテンツは、リストビューではありませんid属性「android.R.id.list」との見解を持っていますクラス

+0

こんにちは。あなたの答えをありがとうございました。それは私のために働いた! – DireNemesis74

0

は、このようなFrameLayoutSupportFragmentManagerを使用してみてください:

main_activity.xml:

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 

    <FrameLayout 
     android:id="@+id/myListFrag" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"/> 

</LinearLayout> 

fragment_my_list.xml:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <ListView 
     android:id="@+id/myListView" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

</FrameLayout> 

MainActivity.java:

public class MainActivity extends AppCompatActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    MyListFragment fragment = new MyListFragment(); 
    getSupportFragmentManager() 
      .beginTransaction() 
      .replace(R.id.myListFrag, fragment) 
      .commit(); 
} 

うまくいくはずです。

+0

こんにちは。提案ありがとう。私は DireNemesis74

+0

あなたのソリューションをありがとう。私はあなたのコードを試しましたが、残念ながらそれはまだうまくいかず、問題は同じように見えます。 – DireNemesis74

+0

フラグメントを含む行はそこに存在してはならないので、プロジェクトをもう一度クリーンにしてビルドしてください。 –

-1
Please check this 

MainActivity.java 

public class MainActivity extends Activity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

    MyListFragment myListFragment = new MyListFragment(); 
     (MainActivity.this).getSupportFragmentManager().beginTransaction().replace(R.id.main_content, loginFragment).commit(); 
    } 
} 



main_activity.xml 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".MainActivity" 
    android:orientation="vertical"> 

<FrameLayout 
    android:id="@+id/main_content" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"/> 

</LinearLayout> 



public class MyListFragment extends ListFragment implements AdapterView.OnItemClickListener { 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View rootView=inflater.inflate(R.layout.fragment_my_list, container, false); 

    return rootView; 
    } 

    @Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 
     ArrayAdapter adapter = ArrayAdapter.createFromResource(getActivity(), R.array.myList, android.R.layout.simple_list_item_1); 
     setListAdapter(adapter); 
     getListView().setOnItemClickListener(this); 
    } 

    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position,long id) { 
     Toast.makeText(getActivity(), "Item: " + position, Toast.LENGTH_SHORT).show(); 
    } 
} 
+0

こんにちは。この提案についてはありがとうございますが、このコードは、他の提案された解決策と同様に、私のものでも機能しません。理由はわかりません。 – DireNemesis74

+0

こんにちはDireNemesisあなたのコードを再度共有することができます –