1

フラグメントにリストがあり、そのリストで何かを押すと、新しいアクティビティを開始したいと思います。最初のオプションで試しただけですが、試したときにエラーが発生します。

03-20 15:16:13.017: E/AndroidRuntime(941): Caused by: java.lang.ClassCastException: com.test.test.Algebra cannot be cast to android.app.Activity

これが私のフラグメントクラスです:

public class FragmentTest extends SherlockListFragment {

String formler[]= {
        "Algebra",
        "Aritmetik",
        "Differential- och integralkalkyl",
        "Funktioner",
        "Geometri",
        "Komplexa tal",
        "Statistik och sannolikhet",
        "Trigonometri"
};

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    setListAdapter(new ArrayAdapter<String>(getActivity().getBaseContext(), android.R.layout.simple_list_item_1, formler));

    return super.onCreateView(inflater, container, savedInstanceState);
}

@Override
public void onListItemClick(ListView l, View v, int position, long id) {
    // TODO Auto-generated method stub
    super.onListItemClick(l, v, position, id);
    String choice = formler[position];
    try{
        @SuppressWarnings("rawtypes")
        Class choiceClass = Class.forName("com.test.test." + choice);
        Intent startIntent = new Intent(getActivity().getBaseContext(), choiceClass);
        startActivity(startIntent);
    }catch(ClassNotFoundException e){
        e.printStackTrace();
    }
}

}

私は何が間違っているのですか?

4

2 に答える 2

2

代数がアクティビティを拡張していることを確認してください。また、このようなアクティビティを簡単に開始できます。new Intent(currectActivity.this, Algebra.class);

于 2013-03-20T15:35:18.220 に答える
0

SherlockListFragmentを使用したことはありませんが、Fragmentを使用しました。新しいフラグメントを初期化したいときは、

NewFragmentClass newFragment = new NewFragmentClass ();
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.replace(R.id.myCurrentFragmentId, newFragment);
transaction.addToBackStack(null);
// Commit the transaction
transaction.commit();

私はこの助けを願っています

于 2013-03-20T15:43:55.253 に答える