我有CustomDialog
,其中我使用了TextViews
个onClick
个onClick
属性,现在我想在Activity class
中访问这些CustomDialog
方法。由于此Activity
从我想要访问onClick
方法的onClick
类中膨胀,所以当我为public void playerEdit(View view) {
Toast.makeText(this,"hello",Toast.LENGTH_LONG).show();
}
创建方法时
Exception
显然它会抛出 Could not find a method playeEdit(View) in the activity class android.view.ContextThemeWrapper for onClick handler on view class android.widget.TextView with id 'p1'
Activity Class
这意味着我试图在不可访问的类中获取它,
我的问题是如何在Exception
?
如何处理此{{1}}? 许多人提前感谢...
答案 0 :(得分:0)
您的xml文件中可能有拼写错误。方法名称为" playeEdit"而不是" playerEdit"
答案 1 :(得分:0)
我相信在构建AlertDialog时,你会以类似的方式进行:
ContextThemeWrapper themedContext = new ContextThemeWrapper(getActivity(),android.R.style.Theme_Dialog);
AlertDialog.Builder builder = new AlertDialog.Builder(themedContext);
(发布整个代码有帮助)
您将获得异常,因为xml中的onClick处理程序在其中查看的活动(以及xml被充气的位置)是在此主题活动中,而不是原始活动!
您需要扩展ContextThemeWrapper类,将其传递给构建器,并实现点击处理程序,如下所示:
public static class MyContextThemeWrapper extends ContextThemeWrapper
{
public MyContextThemeWrapper() {
super();
}
public MyContextThemeWrapper(Context base, int themeres) {
super(base, themeres);
}
public void playerEdit(View view)
{
// Do stuff when clicked
}
}
如上所述,您将把您的课程传递给您的建设者:
MyContextThemeWrapper themedContext = new MyContextThemeWrapper(getActivity(), android.R.style.Theme_Dialog);
AlertDialog.Builder builder = new AlertDialog.Builder(themedContext);
这确实有用......我测试了它!