Java 强制转换上下文时发生IllegalStateException

Java 强制转换上下文时发生IllegalStateException,java,android,Java,Android,我正在尝试将活动强制转换为FragmentActivty对象,以便获得FragmentManager对象 public class Main extends ListActivity { ... public void showTimePickerDialog(View v) { FragmentActivity myContext=(FragmentActivity) getApplicationContext(); //Here: java.lang.IllegalSt

我正在尝试将活动强制转换为FragmentActivty对象,以便获得FragmentManager对象

public class Main extends ListActivity {
...
   public void showTimePickerDialog(View v) {
        FragmentActivity myContext=(FragmentActivity) getApplicationContext(); //Here: java.lang.IllegalStateException: Could not execute method of the activity

        FragmentManager fragManager = myContext.getFragmentManager();
        DialogFragment newFragment = new uSharedUtility.TimePickerFragment();
        newFragment.show(fragManager, "timePicker");
    }
}
但当我这样做时,我得到:

java.lang.IllegalStateException: Could not execute method of the activity
我不能直接使用
getFragmentManager
,因为我的活动是从
ListActivity
扩展而来的,这是非常必要的


请建议我绕过此错误,我确实需要在同一活动中同时使用ListAdapter和日期/时间选择器。

您不能将应用程序上下文强制转换为活动,您必须使用活动上下文

(FragmentActivity) getApplicationContext() // Not Possible
getContext():返回视图当前运行的上下文。通常是当前活跃的活动

getApplicationContext():返回整个应用程序(所有活动都在其中运行的进程)的上下文。如果需要与整个应用程序(而不仅仅是当前活动)的生命周期相关联的上下文,请使用此上下文而不是当前活动上下文

我不能直接使用
getFragmentManager
,因为我的活动是从
ListActivity
扩展而来的,这是非常必要的

没有必要。您可以在任何活动中使用
列表视图


由于您已经使用了片段,请考虑使用<代码> ListFrace<代码> > <代码>碎片活动< /代码>。当您试图调用一个方法,并且该方法所依赖的状态未设置为它们应该是什么时,就会抛出它。如果有的话,你会得到一个

ClassCastException
@VinceEmigh根本原因异常被包装在
IllegalStateException
中,例如,
onClick
处理程序抛出。@laato我的错,没有想到这一点。这就是为什么有一个完整的stacktrace总是很好的
getContext():
我在任何地方都找不到这个方法?你能把我链接到在线文档吗?你能分享一下你必须使用这个的完整课程吗。还可以尝试使用v.getContext()。我已经用类定义更新了我的问题,请检查
v.getContext()
也给出了相同的答案error@Maven不能将ListActivity强制转换为FragmentActivity。在您的情况下,v.getContext()将返回ListActivity.:(您必须使用/扩展FragmentActivity。当我从
FragmentActivity
而不是
ListActivity
扩展它时,像
setListAdapter
onListItemClick这样的列表方法将无法启用。您可以直接在ListView上调用类似的方法。或者ListFragment.if如果从
FragmentActivity扩展
super.onListItemClick(l,v,position,id)出现错误,`那么如何使用此方法?