Я пытался передать некоторые параметры в AlertDialog, этот диалог показывает эти два параметра (предположим, параметры "foo" и "bar" ), и я вызываю это диалоговое окно с помощью showDialog(int id)
. В классе Activity есть еще один метод, который принимает объект Bundle
для передачи параметров: showDialog(int id, Bundle args)
, но этот метод доступен только для API 8 или выше, и мне нужно работать с API 7.
Здесь я помещаю некоторые куски кода, чтобы сделать то, что я делаю.
В моей деятельности я создаю AlertDialog следующим образом:
protected Dialog onCreateDialog(int id) {
final LayoutInflater factory = LayoutInflater.from(this);
switch(id) {
case DIALOG_ID:
final View view = factory.inflate(R.layout.dialog_layout, null);
final TextView fooValue = (TextView)view.findViewById(R.id.foo_label);
final TextView barValue = (TextView)view.findViewById(R.id.foo_label);
//fooLabel.setText("HERE MUST BE FOO PARAMETER VALUE");
//barLabel.setText("HERE MUST BE BAR PARAMETER VALUE");
return new AlertDialog.Builder(this).
setIcon(R.drawable.icon).
setTitle(R.string.app_name).
setView(view).
setPositiveButton(R.string.close, null).
create();
...
И в другой части я вызываю это диалоговое окно:
// THESE PARAMETERS MUST BE PASSED TO DIALOG
int foo = result.getInt("foo");
String bar = result.getString("bar");
showDialog(DIALOG_ID);
...
Большое спасибо!
Я предлагаю добавить класс setFooBar(int foo, String bar)
к классу, который реализует вышеприведенную функцию onCreateDialog
, для получения значений foo и bar до вызова showDialog
.
Если у вас нет экземпляра активности, подумайте о том, чтобы сделать метод и переменные static.
попробуйте этот пример
LayoutInflater factory = LayoutInflater.from(this);
final View textEntryView = factory.inflate(R.layout.alert_dialog_text_entry, null);// this layout can created by yourself whatever you want.
return new AlertDialog.Builder(AlertDialogSamples.this)
.setIcon(R.drawable.alert_dialog_icon)
.setTitle(R.string.alert_dialog_text_entry)
.setView(textEntryView)
.setPositiveButton(R.string.alert_dialog_ok, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
/* User clicked OK so do some stuff */
}
})
.setNegativeButton(R.string.alert_dialog_cancel, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
/* User clicked cancel so do some stuff */
}
})
.create();
layoutname: main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:layout_width="fill_parent" android:textColor="#663355"
android:layout_height="wrap_content" android:hint="@string/hello" />
</LinearLayout>