0

関連するコードを投稿し、明確に説明するために最善を尽くします...私はAndroidのチュートリアルに従っています。これは、現在フラグメントに変換しているListViewアプリケーションでした。クラスの1つをからに変更するように指示されましextends ListActivityextends Activity。その際、ListActivityに固有の2つの呼び出しを変更する必要がありました。私はそれらを適切に変更したと思いましたが、これらのエラーが発生しています(リストの一番上にあります):

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変数は新しく、それを使用して行われた2つの呼び出しは以前は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)フラグメントを拡張するクラスを作成します。

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 に答える