Java 强制转换上下文时发生IllegalStateException
我正在尝试将活动强制转换为FragmentActivty对象,以便获得FragmentManager对象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
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)出现错误,`那么如何使用此方法?