我有一个奇怪的问题.当我运行应用程序并单击按钮(btn_eng或btn_pl)时,我看到登录logcat(“擦除对话框”或“擦除对话框PL”),但是下次单击该按钮时,它不显示并且按钮不执行其onClick动作.
我试图通过按钮来更改语言.在我的应用程序中,我有一个对话框,其数据形式为“资源”(字符串数组),当我更改语言时,我想擦除对话框并使用足够的数据进行新建.
//public static Activity act; -> before onCreate(..) this.act = this; button btn_eng = (button) findVIEwByID(R.ID.btnEN); btn_eng.setonClickListener(new VIEw.OnClickListener() { @OverrIDe public voID onClick(VIEw v) { Log.d("XXX", "Erase dialog"); act.removeDialog(1); Locale locale = new Locale("en"); Locale.setDefault(locale); Configuration config = act.getBaseContext().getResources().getConfiguration(); config.locale = locale; act.getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getdisplayMetrics()); act.setContentVIEw(R.layout.main); } }); button btn_pl = (button) findVIEwByID(R.ID.btnPL); btn_pl.setonClickListener(new VIEw.OnClickListener() { @OverrIDe public voID onClick(VIEw v) { Log.d("XXX", "Erase dialog PL"); act.removeDialog(1); Locale locale = new Locale("pl"); Locale.setDefault(locale); Configuration config = act.getBaseContext().getResources().getConfiguration(); config.locale = locale; act.getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getdisplayMetrics()); act.setContentVIEw(R.layout.main); } });
解决方法:
这是因为您要重置onClick中的内容视图.调用setContentVIEw不会导致onCreate得以运行-这就是(我猜是)将onClick侦听器链接到按钮的位置.但是,这确实会导致显示布局的全新实例.您需要找到一种新的方式来刷新屏幕,而不是用新数据替换屏幕.最好的方法是为您的活动获取包装的VIEwGroup并致电View#invalidate();
总结以上是内存溢出为你收集整理的android-单击后的按钮不起作用全部内容,希望文章能够帮你解决android-单击后的按钮不起作用所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)