0

我会尽力发布相关代码并解释清楚......我正在关注Android上的教程;这是一个 ListView 应用程序,我现在将其转换为片段。它告诉我将我的一门课程从 更改extends ListActivityextends Activity。这样做时,我对 ListActivity 的两个调用需要更改。我以为我正确地更改了它们,但我收到了这些错误(只是列表的顶部):

W/dalvikvm(4486): threadid=1: thread exiting with uncaught exception (group=0x40209760)
E/AndroidRuntime(4486): FATAL EXCEPTION: main
E/AndroidRuntime(4486): java.lang.RuntimeException: Unable to start activity 
    ComponentInfo{com.example.testing/com.example.testing.MainActivity}:
    java.lang.ClassCastException: android.widget.FrameLayout cannot be cast to android.widget.ListView

我认为相关的部分我的主要活动代码是:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.list_fragment);

    ListView lv = (ListView) findViewById(R.id.list_fragment);
    lv.setAdapter(ArrayAdapter.createFromResource(getApplicationContext(),
            R.array.tut_titles, R.layout.activity_main));
    final String[] links = getResources().getStringArray(R.array.tut_links);

    lv.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick......

        }
    });
}

lv 变量是新的,使用它进行的两次调用曾经是特定于 ListActivity 的。到目前为止,我的 list_fragment 只是这样:

<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
    android:name="com.example.testing.UrlFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/list_fragment">
</fragment>

呸!我认为这就是所需要的,但如果我确定的话,我可能会自己解决这个问题。任何人都可以帮忙吗?

4

1 回答 1

1

您在以下行中遇到问题。

ListView lv = (ListView) findViewById(R.id.list_fragment);

从 R 文件中,您正在引用片段,但您要将其转换为 ListView,这是您的问题。您可以按如下方式简单地解决它。

1)创建一个扩展Fragment的类。

public static class YourFragmentClass extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.example_fragment, container, false);
    }
}

2)在你的活动课上。

YourFragmentClass fragment = new YourFragmentClass ();
fragmentTransaction.add(R.id.list_fragmentr, fragment);
fragmentTransaction.commit();

3)更多检查这个

于 2012-09-13T03:40:32.497 回答