ダイアログプロファレンスにWidgetsにアクセスします
-
16-10-2019 - |
質問
次のように定義された設定アクティビティにダイアログがあります(レイアウトはXMLで定義されています):
public class DialogPreference extends android.preference.DialogPreference {
public DialogPreference(Context context, AttributeSet attrs) {
super(context, attrs);
}
public DialogPreference(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public void onClick (DialogInterface dialog, int which) {
if (DialogInterface.BUTTON_POSITIVE == which) {
if (getKey() ==
getContext().getResources().getText(R.string.blabla)) {
// FIXME ??? - how ?
Log.v(TAG, "DialogPreference: onClick");
}
}
}
}
ダイアログにはいくつかのウィジェットがあります。 RadioGroup
そしていくつか RadioButton
s。私は現在、これらのウィジェットにアクセスする方法を見つけることができません onClick
方法。
それらのウィジェットにアクセスする方法は何ですか?
解決
キャストできます DialogInterface
に AlertDialog
そのようです:
public void onClick (DialogInterface dialog, int which) {
if (DialogInterface.BUTTON_POSITIVE == which) {
RadioButton button = (RadioButton) ((AlertDialog) dialog).findViewById(R.id.radio_button_id);
// continue using button
}
}
(または同様のもの)
他のヒント
以下は私のコード全体です
final AlertDialog.Builder Main_Dialog = new AlertDialog.Builder(this);
////This is how to set layout
final View layout = getLayoutInflater().inflate(R.layout.conpassword,null);
Main_Dialog.setTitle("Choose reminder");
Main_Dialog.setView(layout);
Main_Dialog.setTitle("Enter IP Address:");
Main_Dialog.setPositiveButton("Ok", new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int whichButton)
{
connectWIFi();
if (connect && ni.getType() == ConnectivityManager.TYPE_WIFI)
{
final ImageButton input = (ImageButton) layout.findViewById(R.id.ImageButton01);
saveIP(input.getText().toString(), deviceId);
Thread cThread = new Thread(new ClientServer(LoginScreen.this, input.getText().toString(),
deviceId, mHandler));
cThread.start();
dialog.dismiss();
}
else
{
Builder builder = new AlertDialog.Builder(LoginScreen.this);
builder.setTitle("Alert !");
builder.setMessage("No WiFi connection. Please check your WiFi settings");
builder.setPositiveButton("Ok", null);
builder.show();
}
}
});
Main_Dialog.show();
なぜあなたがgetLayoutInflaterを取得していないのかわかりませんが、このコードは私と一緒にスムーズに実行されます
所属していません StackOverflow