我有一个奇怪的问题。当我运行应用并点击按钮(btn_eng或btn_pl)时,在logcat中我会看到日志(“Erase dialog”或“Erase dialog 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);
}
});
act.getWindow().getDecorView().findViewById(android.R.id.content).invalidate();
代替act.setContentView(R.layout.main);
,现在它可以正常工作 :) - plancys