ダイアログが閉じないように setOnShowListener() メソッドを設定したいので、次のように記述します。
public Dialog update_pop_up()
{
final AlertDialog.Builder builder = new AlertDialog.Builder(UgJadwal.this);
LayoutInflater inflater = UgJadwal.this.getLayoutInflater();
View dialogView = inflater.inflate(R.layout.updatepopup, null);
builder.setView(dialogView);
builder.setIcon(R.drawable.update);
builder.setTitle("Update schedule");
builder.setPositiveButton(R.string.update, new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int id)
{
}
});
builder.setNeutralButton(R.string.retrieve, new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int id)
{
}
});
builder.setNegativeButton(R.string.cancel, null);
return builder.create();
builder.setOnShowListener(new DialogInterface.OnShowListener()
{
@Override
public void onShow(DialogInterface dialog)
{
Button retrieve = builder.getButton(AlertDialog.BUTTON_NEUTRAL);
retrieve.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
//do nothing;
}
});
}
});
}
少なくとも Eclipse によって 2 つのエラーが表示されます。最初のエラーはsetOnShowListener
「メソッド setOnShowListener(new DialogInterface.OnShowListener(){}) は AlertDialog.Builder 型に対して未定義です」というエラーであり、もう 1 つはそのエラーですbuilder.getButton(AlertDialog.BUTTON_NEUTRAL)
。 「メソッド getButton(int) は、タイプ AlertDialog.Builder に対して定義されていません」。私はそれを正しくやったので、なぜエラーが発生するのだろうかと思います。誰もがそれを修正する考えを持っていますか、ありがとう。
【UPDATE!!】 いつもお世話になっております。これが私の最終的な方法ですsetOnShowListener()
dialog.setOnShowListener(new DialogInterface.OnShowListener()
{
@Override
public void onShow(DialogInterface dialog)
{
Button retrieve = ((AlertDialog) dialog).getButton(AlertDialog.BUTTON_NEUTRAL);
retrieve.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
datasource.opentoread();
String[] hari = datasource.fetchDaily(ids.getText().toString());
datasource.close();
day.setText(String.valueOf(hari[0]));
subject.setText(String.valueOf(hari[1]));
time.setText(String.valueOf(hari[2]));
location.setText(String.valueOf(hari[3]));
lecture.setText(String.valueOf(hari[4]));
Toast.makeText(getApplicationContext(), "Retrieve success", Toast.LENGTH_LONG).show();
}
});
}
});
return dialog;