2016-01-19 2 views
1

Я пытаюсь перейти к другому фрагменту (от сайта AirportPostFragment до FinishPostFragment), нажав на элемент в ListView. Почему это не работает?Как перейти к другому фрагменту, нажав на элемент в ListView?

(getActivity()) подчеркнуто красным.

Ошибка: (61, 66) error: конструктор FinishPostFragment в классе FinishPostFragment не может применяться к заданным типам; не требуется: нет аргументов найдено: Активность Причина: фактические и формальные списки аргументов различаются по длине

Код:

public class AirportPostFragment extends Fragment { 

String stringsList[]; 
ArrayAdapter<String> adapter; 
private ListView listViewAirports; 
private EditText editSearch; 
Context mycontext; 
XmlPullParser parser; 
HashSet airport_list; 
HashSet<String> list = new HashSet<>(); 
HashSet<String> newList = new HashSet<>(); 

@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.fragment_airportpost, container, false); 

    listViewAirports = (ListView) rootView.findViewById(R.id.listView_airports); 
    editSearch = (EditText) rootView.findViewById(R.id.search_airport); 
    adapter = new ArrayAdapter<>(getActivity(),android.R.layout.simple_list_item_1, stringsList); 

    listViewAirports.setAdapter(adapter); 


    listViewAirports.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, 
           long id) { 
      FragmentManager fm = getActivity().getFragmentManager(); 
      fm.beginTransaction().replace(R.id.content_main, new FinishPostFragment(getActivity())).commit(); 
     } 
    }); 




    searchAirport(); 

    return rootView; 
} 

Это мой код FinishPostFragment:

public class FinishPostFragment extends Fragment { 

    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.fragment_finishpost, container, false); 

     return rootView; 
    } 
} 

Этот мой код FinishPostFragment:

public class FinishPostFragment extends Fragment { 

@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.fragment_finishpost, container, false); 

    return rootView; 
} 

}

+0

пойти в FinishPostActibity и создать конструктор с аргументом активности – piotrek1543

+0

Можете ли вы привести пример? – Rang92

+0

Посмотрите мой код FinishPostFragment ниже. – Rang92

ответ

2

Похоже, вопрос в том, что вы не имеете конструктор FinishPostFragment, который принимает активность. Поскольку вы всегда можете использовать getActivity() во Фрагменте, нет необходимости передавать ему действие в конструкторе.

Вы можете просто изменить его к этому:

fm.beginTransaction().replace(R.id.content_main, new FinishPostFragment()).commit(); 
Смежные вопросы