Я пытался создать диалог для моего приложения, но это довольно сложно сделать с отсутствием примеров, доступных в Интернете. Ниже изображено нечто подобное, что я хотел бы.DialogFragments для пользователей, чтобы ввести данные
Аналогичная конструкция с изображением выше была бы замечательной. Я не уверен, что то, что я делаю, правильно, и до сих пор это то, что я сделал.
Я не знаю, как выложить dialogFragment, как, каким образом оно было сделано для первой картины, и я не уверен, как получить поля, где мои пользователи могут вводить данные. Ниже приведен код, который у меня есть.
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.DialogFragment;
import android.content.DialogInterface;
import android.os.Bundle;
import android.util.Log;
import android.view.*;
import android.widget.Button;
import android.widget.ListView;
import java.util.ArrayList;
import java.util.List;
public class Reminders extends Activity
{
Button add, edit, remove;
ListView lv;
@Override
protected void onCreate(Bundle savedInstanceState)
{
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.reminders);
initializeVariables();
add.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
showDialog();
}
});
List<ListViewItem> items = new ArrayList<Reminders.ListViewItem>();
items.add(new ListViewItem()
{
{
ThumbnailResource = R.drawable.ic_launcher;
Title = "Item1 Title";
Date = "Item1 Date";
Time = "Item1 Time";
Amount = "£0.00";
}
});
items.add(new ListViewItem()
{
{
ThumbnailResource = R.drawable.ic_launcher;
Title = "Item2 Title";
Date = "Item2 Date";
Time = "Item2 Time";
Amount = "£0.00";
}
});
CustomListViewAdapter adapter = new CustomListViewAdapter(this, items);
lv.setAdapter(adapter);
}
private void initializeVariables()
{
add = (Button) findViewById(R.id.bAdd);
edit = (Button) findViewById(R.id.bEdit);
remove = (Button) findViewById(R.id.bRemove);
lv = (ListView) findViewById(R.id.LVReminder);
}
class ListViewItem
{
public int ThumbnailResource;
public String Title;
public String Date;
public String Time;
public String Amount;
}
void showDialog() {
DialogFragment newFragment = MyAlertDialogFragment
.newInstance(R.string.dialog_title);
newFragment.show(getFragmentManager(), "New");
}
public void doPositiveClick() {
// Do stuff here.
Log.i("FragmentAlertDialog", "Positive click!");
}
public void doNegativeClick() {
// Do stuff here.
Log.i("FragmentAlertDialog", "Negative click!");
}
public static class MyAlertDialogFragment extends DialogFragment
{
public static MyAlertDialogFragment newInstance(int title)
{
MyAlertDialogFragment frag = new MyAlertDialogFragment();
Bundle args = new Bundle();
args.putInt("title", title);
frag.setArguments(args);
return frag;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState)
{
int title = getArguments().getInt("title");
return new AlertDialog.Builder(getActivity())
.setIcon(R.drawable.ic_launcher)
.setTitle(title)
.setPositiveButton(R.string.alert_dialog_ok,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int whichButton) {
((Reminders) getActivity())
.doPositiveClick();
}
})
.setNegativeButton(R.string.alert_dialog_cancel,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int whichButton) {
((Reminders) getActivity())
.doNegativeClick();
}
}).create();
}
}
}
Я был бы признателен за любые советы о том, как получить DialogFragment, как в первом ПОС я предоставил. Спасибо всем, кто пытается мне помочь.
Было бы лучше, если бы я просто включил кнопки в макет XML, вместо того, чтобы иметь .setPositiveButton и .setNegativeButton –
Зависит от того, где вы хотите кнопки. Если вам просто нужно ОК и отменить в нижней части диалогового окна, я думаю, что у вас все хорошо. Если вам нужно больше в разных местах, то делайте их через XML. Также я бы согласился с Warpzit, что пример компоновки довольно сложный для телефона, и вы можете рассмотреть «более легкий» макет для телефона с несколькими диалогами в качестве опции. – TronicZomB
Да, в нижней части диалогового окна было бы здорово. Макет в примере pic - это в основном то, что я хочу сделать. Дайте пользователям возможность установить напоминание, поэтому они выбирают дату, на которую они хотят напомнить о вещи, и затем должна быть возможность повторить ее на дату x в момент времени x и дату y в момент y –