遇到错误,上面写着我的ListFragment无法转换为android.app.Activity 。它适用于具有2个窗格布局的平板电脑应用程序,这是左侧。遇到崩溃不知道为什么。任何帮助都会很棒。
代码:
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.app.ListFragment;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class MainActivityTab extends ListFragment {
FragmentManager fm;
FragmentTransaction ft;
Fragment myFragment;
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
String[] values = new String[] { "Player", "", "About This",
"The Science", "Information", "Instructions", "PDF"};
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(),
android.R.layout.simple_list_item_1, values);
setListAdapter(adapter);
FragmentManager fm = getActivity().getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
if (savedInstanceState == null){
Fragment_11 myFragment = new Fragment_11();
ft.add(R.id.content_layout, myFragment);
ft.commit(); }}
@Override
public void onListItemClick(ListView l, View v, int position, long id){
Fragment newFragment = null;
FragmentManager fm = getActivity().getSupportFragmentManager();
switch(position){
case 0:
newFragment = new Fragment_11();
break;
case 1:
newFragment = new Fragment_2();
break;
case 2:
newFragment = new Fragment_3();
break;
case 3:
newFragment = new Fragment_4();
break;
case 4:
newFragment = new Fragment_5();
break;
case 5:
newFragment = new Fragment_6();
break;
}
FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.id.content_layout, newFragment);
ft.addToBackStack(null)
.commit();
}
}
错误:
09-04 12:07:24.897: E/AndroidRuntime(32209): FATAL EXCEPTION: main
09-04 12:07:24.897: E/AndroidRuntime(32209): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.appexample.sseconds/com.appexample.sseconds.MainActivityTab}: java.lang.ClassCastException: com.appexample.sseconds.MainActivityTab cannot be cast to android.app.Activity
09-04 12:07:24.897: E/AndroidRuntime(32209): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2137)
09-04 12:07:24.897: E/AndroidRuntime(32209): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
09-04 12:07:24.897: E/AndroidRuntime(32209): at android.app.ActivityThread.access$600(ActivityThread.java:141)
09-04 12:07:24.897: E/AndroidRuntime(32209): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
09-04 12:07:24.897: E/AndroidRuntime(32209): at android.os.Handler.dispatchMessage(Handler.java:99)
09-04 12:07:24.897: E/AndroidRuntime(32209): at android.os.Looper.loop(Looper.java:137)
09-04 12:07:24.897: E/AndroidRuntime(32209): at android.app.ActivityThread.main(ActivityThread.java:5103)
09-04 12:07:24.897: E/AndroidRuntime(32209): at java.lang.reflect.Method.invokeNative(Native Method)
09-04 12:07:24.897: E/AndroidRuntime(32209): at java.lang.reflect.Method.invoke(Method.java:525)
09-04 12:07:24.897: E/AndroidRuntime(32209): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
09-04 12:07:24.897: E/AndroidRuntime(32209): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
09-04 12:07:24.897: E/AndroidRuntime(32209): at dalvik.system.NativeStart.main(Native Method)
09-04 12:07:24.897: E/AndroidRuntime(32209): Caused by: java.lang.ClassCastException: com.appexample.sseconds.MainActivityTab cannot be cast to android.app.Activity
09-04 12:07:24.897: E/AndroidRuntime(32209): at android.app.Instrumentation.newActivity(Instrumentation.java:1061)
09-04 12:07:24.897: E/AndroidRuntime(32209): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2128)
09-04 12:07:24.897: E/AndroidRuntime(32209): ... 11 more
答案 0 :(得分:1)
不知道崩溃在哪里,但你正在以错误的方式做所有事情。在Fragment代码中的Activity上启动FragmentTransaction始终是一个不好的做法。 在扩展Activity类中执行所有事务操作。 如果您需要OnListItemClick事件 - 您可以执行
((MyActivity) getActivity()).onListItemClick()
举办活动。