Я создаю страницу поиска для приложения для Android. Я хочу добавить некоторые фильтры для поиска в какой-то модальности, и предложения в Интернете говорят, что я должен использовать AlertDialog с фрагментом, чтобы показывать свои настраиваемые фильтры. Мне удалось отобразить фрагмент в диалоговом окне, но код, связанный с фрагментом, например, onCreate, не вызывается. Когда я использую фрагмент непосредственно в действии, его вызов onCreate вызывается, но не когда он загружается с помощью AlertDialog. Есть ли что-то, что я делаю неправильно, или я должен делать это по-другому?Android Fragment в диалоговом окне предупреждения
Это код, который используется, чтобы открыть диалоговый
SearchFilterDialogFragment dialog = new SearchFilterDialogFragment();
FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
Fragment prev = getFragmentManager().findFragmentByTag("dialog");
if (prev != null) {
fragmentTransaction.remove(prev);
}
fragmentTransaction.addToBackStack(null);
dialog.show(fragmentTransaction,"dialog");
Это код для диалоговой конфигурации
public class SearchFilterDialogFragment extends DialogFragment {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the Builder class for convenient dialog construction
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
LayoutInflater inflater = getActivity().getLayoutInflater();
builder.setView(inflater.inflate(R.layout.fragment_blank,null)).setTitle("Search Filters")
.setPositiveButton(R.string.filter_dialogue_ok, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// FIRE ZE MISSILES!
}
})
.setNegativeButton(R.string.filter_dialogue_cancel, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// User cancelled the dialog
}
});
return builder.create();
}
Это фрагмент теста, который будет в конечном счете фактических фильтров в нем
public class BlankFragment extends Fragment {
public BlankFragment() {
// Required empty public constructor
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_blank, container, false);
}
Я никогда не говорил об этом раньше, но на планшетных устройствах я хочу использовать фрагмент в том же виде, в результатах поиска. Я просто методику внутренней работы и повторной реализации их в фрагменте я буду использовать на странице? Я надеялся использовать один фрагмент в обоих местах. –
http://developer.android.com/reference/android/app/DialogFragment.html#DialogOrEmbed Вам понадобится контейнерный вид, добавленный в ваш макет, и программно определить, является ли это планшетом. Затем вставьте, если планшет, или покажите как диалог, если нет. –
Итак, фрагмент diallog - это всего лишь фрагмент, который можно отобразить в виде диалога, если вы хотите? –