user2407147
user2407147

Reputation: 1550

ListFragment Cannot be cast to android.app.Activity

Facing an error which says My ListFragment Cannot be cast to android.app.Activity. It's for a tablet app with a 2 pane layout and this is the left side. Getting a crash not sure why. Any help would be awesome.

Code:

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();
 }

 }

Error:

 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

Upvotes: 0

Views: 989

Answers (1)

Yaroslav Mytkalyk
Yaroslav Mytkalyk

Reputation: 17105

Don't know where is the crash, but you are doing everything in wrong manner. It's always a bad practice to start FragmentTransaction on Activity inside a Fragment code. Do all transaction manipulations in extends Activity class. If you need OnListItemClick events - you can do

((MyActivity) getActivity()).onListItemClick()

to deliver the event.

Upvotes: 1

Related Questions