Nikoz47_4pda
@Nikoz47_4pda

Запуск DialogFragment.class с помощью onListItemClick?

Есть вот такой класс в котором описан Custom ListView, мне нужно сделать так, что бы по нажатию каждого элемента из списка выводился отдельный DialogFragment, этот способ крашит апликуху при нажатии на любой пункт из списка:
@Override
    public void onListItemClick(ListView l, View v, int position, long id){
    switch(position){
            case 0:
                i = new Intent(getActivity().getApplicationContext(), First.class);
                break;
        }
        startActivity(i);
    }


Полный код класса:

package ua.nikoz47.mobilewaiter.Tabs;

import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.ListFragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import android.widget.SimpleAdapter;

import java.util.ArrayList;
import java.util.HashMap;

import ua.nikoz47.mobilewaiter.Food.First;
import ua.nikoz47.mobilewaiter.R;

public class Menu extends ListFragment{

    Intent i;

    String[] menu_list={
            "Перші страви",
            "Другі страви",
            "Десерти",
            "Алкогольні напої",
            "Безалкогольні напої"};

    int[] menu_icons={
            R.drawable.first,
            R.drawable.second,
            R.drawable.dessert,
            R.drawable.alcohol,
            R.drawable.soft_drinks};

    ArrayList<HashMap<String, String>> data=new ArrayList<>();
    SimpleAdapter adapter;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        HashMap<String, String> map=new HashMap<>();
        for(int i=0;i<menu_list.length;i++)
        {
            map=new HashMap<>();
            map.put("MenuItem", menu_list[i]);
            map.put("MenuImage", Integer.toString(menu_icons[i]));

            data.add(map);
        }

        String[] from={"MenuItem","MenuImage"};
        int[] to={R.id.menu_textView,R.id.menu_imageView};

        adapter=new SimpleAdapter(getActivity(), data, R.layout.custom_menu, from, to);
        setListAdapter(adapter);

        return super.onCreateView(inflater, container, savedInstanceState);
    }

    @Override
    public void onListItemClick(ListView l, View v, int position, long id){
    switch(position){
            case 0:
                i = new Intent(getActivity().getApplicationContext(), First.class);
                break;
        }
        startActivity(i);
    }

}
  • Вопрос задан
  • 410 просмотров
Решения вопроса 1
Nikoz47_4pda
@Nikoz47_4pda Автор вопроса
Заменил код на:
@Override
public void onListItemClick(ListView l, View v, int position, long id){
switch(position){
case 0:
p.show(getActivity().getFragmentManager(), First.class.getName());
break;
}
}

Убрал:
startActivity(i);

заработало
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы