Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/180.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 带有ListFragment的简单应用程序;“已经停止”;_Java_Android - Fatal编程技术网

Java 带有ListFragment的简单应用程序;“已经停止”;

Java 带有ListFragment的简单应用程序;“已经停止”;,java,android,Java,Android,我对Android开发和Java编程非常陌生。我试图创建一个带有ListFragment的应用程序(这个应用程序似乎没有必要,但我希望很快将其应用到选项卡式活动中,希望开发一个更大的应用程序),但不幸的是,我的Android设备未能打开该应用程序,并声明它“已停止”不管我读了多少教程,我都无法解决这个问题 这是我的logcat 09-21 20:34:18.825 4369-4369/com.clickme.list E/AndroidRuntime: FATAL EXCEPTION: main

我对Android开发和Java编程非常陌生。我试图创建一个带有ListFragment的应用程序(这个应用程序似乎没有必要,但我希望很快将其应用到选项卡式活动中,希望开发一个更大的应用程序),但不幸的是,我的Android设备未能打开该应用程序,并声明它“已停止”不管我读了多少教程,我都无法解决这个问题

这是我的
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) 
这是我的
主要活动.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>
<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);
    }
}
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();
    }
}
这是我的
MyListFragment.java

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}
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();
    }
}
公共类MyListFragment扩展ListFragment实现AdapterView.OnItemClickListener{
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
返回充气机。充气(R.layout.fragment\u my\u list,container,false);
}
@凌驾
ActivityCreated上的公共无效(@Nullable Bundle savedinStateCState){
super.onActivityCreated(savedInstanceState);
阵列适配器;
myListAdapter=ArrayAdapter.createFromResource(getActivity(),R.array.myList,android.R.layout.simple_list_item_1);
setListAdapter(myListAdapter);
getListView().setOnItemClickListener(此);
}
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
Toast.makeText(getActivity(),“Item:+位置,Toast.LENGTH_SHORT).show();
}
}

谢谢你帮助一个新手。顺便说一下,我导入了
android.app.ListFragment而不是另一个。希望这是清楚的。

尝试使用
FrameLayout
SupportFragmentManager
如下:

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>

它应该可以正常工作。

尝试使用
FrameLayout
SupportFragmentManager
如下:

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();
   }
}
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>
它应该可以正常工作。

请检查此项
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();
   }
}
MainActivity.java 公共类MainActivity扩展了活动{ @凌驾 创建时受保护的void(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); MyListFragment MyListFragment=新的MyListFragment(); (MainActivity.this).getSupportFragmentManager().beginTransaction().replace(R.id.main_内容,loginFragment).commit(); } } main_activity.xml 公共类MyListFragment扩展ListFragment实现AdapterView.OnItemClickListener{ @凌驾 CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){ 视图rootView=充气机。充气(R.layout.fragment\u my\u列表,容器,false); 返回rootView; } @凌驾 已创建ActivityState上的公共无效(Bundle savedInstanceState){ super.onActivityCreated(savedInstanceState); ArrayAdapter=ArrayAdapter.createFromResource(getActivity(),R.array.myList,android.R.layout.simple\u list\u item\u 1); setListAdapter(适配器); getListView().setOnItemClickListener(此); } @凌驾 public void onItemClick(AdapterView父对象、视图、整型位置、长id){ Toast.makeText(getActivity(),“Item:+位置,Toast.LENGTH_SHORT).show(); } }
请检查此项
MainActivity.java
公共类MainActivity扩展了活动{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MyListFragment MyListFragment=新的MyListFragment();
(MainActivity.this).getSupportFragmentManager().beginTransaction().replace(R.id.main_内容,loginFragment).commit();
}
}
main_activity.xml
公共类MyListFragment扩展ListFragment实现AdapterView.OnItemClickListener{
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
视图rootView=充气机。充气(R.layout.fragment\u my\u列表,容器,false);
返回rootView;
}
@凌驾
已创建ActivityState上的公共无效(Bundle savedInstanceState){
super.onActivityCreated(savedInstanceState);
ArrayAdapter=ArrayAdapter.createFromResource(getActivity(),R.array.myList,android.R.layout.simple\u list\u item\u 1);
setListAdapter(适配器);
getListView().setOnItemClickListener(此);
}
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
Toast.makeText(getActivity(),“Item:+位置,Toast.LENGTH_SHORT).show();
}
}

如果您想使用
ListFragment
,您需要遵守该组件的合同。换句话说,您需要使用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很好,没有问题。试图将xml从片段膨胀为
ListFragment

原因:java.lang.RuntimeException:内容具有id属性为“android.R.id.list”的视图,该视图不是ListView类


如果您想使用
ListFragment
,您需要遵守该组件的合同。换句话说,您需要使用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很好,没有问题。试图将xml从片段膨胀为
ListFragment

原因:java.lang.RuntimeException:内容具有id属性为“android.R.id.list”的视图,该视图不是ListView类


可能是Hello的副本。我查了你的链接,它