Ich habe eine Reihe von Schaltflächen in einem Tabellenlayout definiert.Button Klick Ereignis wird nicht ausgelöst
custom_layout.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<TableLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="10dp"
android:id="@+id/tableLayout">
<TableRow
android:layout_weight="1">
<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/firstBtn"
android:text="F"
android:layout_weight="0.3">
</Button>
<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/secondBtn"
android:text="S"
android:layout_weight="0.3">
</Button>
<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/thirdBtn"
android:text="T"
android:layout_weight="0.3">
</Button>
</TableRow>
</TableLayout>
</RelativeLayout>
Dieses XML wird als Layout innerhalb eines benutzerdefinierten Alarm Dialog eingestellt.
Code:
public class CustomDialogPreference extends DialogPreference {
private Button firstBtn = null;
private Button secondBtn = null;
private Button thirdBtn = null;
public CustomDialogPreference(Context context, AttributeSet attrs) {
super(context, attrs);
setPersistent(false);
this.context = context;
setDialogLayoutResource(R.layout.custom_layout);
}
@Override
protected void onBindDialogView(View view) {
firstBtn = (Button)view.findViewById(R.id.firstBtn);
secondBtn = (Button)view.findViewById(R.id.secondBtn);
thirdBtn = (Button)view.findViewById(R.id.thirdBtn);
firstBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d("Check","First button is clicked"));
}
});
secondBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d("Check","Second button is clicked"));
}
});
thirdBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d("Check","Third button is clicked"));
}
});
super.onBindDialogView(view);
}
@Override
protected void onDialogClosed(boolean positiveResult) {
super.onDialogClosed(positiveResult);
persistBoolean(positiveResult);
Log.d("Blockout","Dialog close detected");
if(positiveResult)
{
Log.d("Blockout","Save button had been clicked");
}
}
}
Wenn der Dialog geöffnet und ich auf den Schaltflächen klicken, ich bin nicht in der Lage, die entsprechenden Log-Meldungen zu sehen. Ich bekomme auch keine Null-Zeiger-Ausnahmen, daher denke ich, dass die Ansichten richtig gesetzt und aufgerufen werden. Irgendeine Idee, was ich vermisse?
wie haben öffnen Sie den Dialog? teilen Sie Ihren Code –
Ich setze diesen Dialog innerhalb einer Präferenz Bildschirm Xml (nicht durch Code) .. und der Dialog öffnet sich und einige andere Elemente in den benutzerdefinierten Dialog sind zugänglich (ich habe das hier nicht enthalten, da es nicht relevant für die Frage) – SoulRayder
machen Sie einen Toast anstelle von Log. –