問題をクラッシュします。私はこのようにタブを追加:アプリケーションは時々言語リソースの変更後
intent = new Intent().setClass(this, SigninActivity.class);
spec = tabHost.newTabSpec("Signin").setIndicator("CV", res.getDrawable(R.drawable.ic_tab_signin)).setContent(intent);
tabHost.addTab(spec);
私が持っているタブで、クリック時に私はAndroid popup window dismissal からの二つのボタンでポップアップを表示するポップアップでいくつかのボタンをクリックすると、このような言語の変更:
Locale mLocale = new Locale("ar");
Locale.setDefault(mLocale);
Configuration config = getBaseContext().getResources().getConfiguration();
if (!config.locale.equals(mLocale)) {
config.locale = mLocale;
getBaseContext().getResources().updateConfiguration(config, null);
replaceContentView("Signin", new Intent(NewAccActivity.this, NewAccActivity.class));
}
とするとき、私はこの方法ポップアップで(PopupWindow)this.window.dismiss()
にNullPointer
とアプリケーションがクラッシュし、言語(レイアウトと値)を変更するために、1つのタブに6-7回クリックします。
dismiss()
を呼び出すためのタイマーを追加しましたが、今度はアプリケーションが6-7言語の変更後にStackOverflowError
でクラッシュします。
問題はどこですか?
UPD:私はタイマーを削除します。ポップアップ画面では、すべてのボタンにOnClickListener
が1つあります。それはこのようになります場合は、活動中this.onClickListener外部ClickListener、魔女変更ロケールた
Button btnDialogShow = (Button) findViewById(R.id.button);
btnDialogShow.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
dw = new LanguageChangeDialog(v, getBaseContext());
dw.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Button b = (Button) v;
switch (b.getId()) {
case R.id.en:
cvitchToEn();
break;
case R.id.ar:
cvitchToAr();
break;
}
}
});
dw.showLikePopDownMenu();
}
});
:活動で
クリックした後
public void setOnClickListener(OnClickListener onClickListener) {
this.onClickListener = onClickListener;
}
public void onClick(final View v) {
onClickListener.onClick(v);
dismiss();
}
私が持っている例外:
Thread [<3> main] (Suspended (exception NullPointerException))
PopupWindow$1.onScrollChanged() line: 124
ViewTreeObserver.dispatchOnScrollChanged() line: 607
ViewRoot.draw(boolean) line: 1195
ViewRoot.performTraversals() line: 1114
ViewRoot.handleMessage(Message) line: 1633
ViewRoot(Handler).dispatchMessage(Message) line: 99
Looper.loop() line: 123
次のようにonClick(別の注文)を変更した場合:
public void onClick(final View v) {
dismiss();
onClickListener.onClick(v);
}
それは動作しますが、6-7クリックした後、私が持っている:
Thread [<3> main] (Suspended (exception StackOverflowError))
ViewRoot.draw(boolean) line: 1374
ViewRoot.performTraversals() line: 1114
ViewRoot.handleMessage(Message) line: 1633
ViewRoot(Handler).dispatchMessage(Message) line: 99
Looper.loop() line: 123
バグをここにどこかが、私はどこを理解することはできません。
this.window
をチェックしてみてくださいませんそれ? – anber@anber "ウィンドウが無効です"は、アクティビティが削除されたことを意味します。 onDestroyメソッドの解除ダイアログが必要です。 –
私はそれを行うが、6-7回のクリック後にStackOverflowErrorを持つ。 – anber