Не удается выполнить ResolveFragmentTransaction.add() с помощью импорта v4.app.Fragment.
Я пытаюсь динамически создать фрагмент и получаю следующее сообщение об ошибке:
Не удается разрешить метод 'add(int, com.brewguide.android.coffeebrewguide.RecipeFragment)
Другие ответы, которые я посмотрел, предположили, что импорт библиотеки для фрагмента был отключен, поэтому я добавил импорт библиотеки v4.app.Fragment
вместо app.Fragment
как фрагменту, так и действию, которое вызывает фрагмент, и проблема не исчезла. Ниже мой код:
MenuActivity.java
package com.brewguide.android.coffeebrewguide;
import android.support.v4.app.Fragment;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.widget.Toast;
public class MenuActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
int position;
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_menu);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
//retrieves intent
Intent i = getIntent();
//fetches menu option that was selected.
// 0 is the default
position = i.getIntExtra("position", 0);
// get an instance of FragmentTransaction from your Activity
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
//add a fragment
RecipeFragment myFragment = new RecipeFragment();
fragmentTransaction.add(R.id.myfragment, myFragment);
fragmentTransaction.commit();
switch (position){
case 1:
break;
case 2:
break;
case 3:
break;
case 4:
break;
default:
Toast toast = Toast.makeText(this,
"An Error has occurred.",
Toast.LENGTH_SHORT);
toast.show();
break;
}
if(getSupportActionBar()!= null){
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
}
}
RecipeFragment.java
package com.brewguide.android.coffeebrewguide;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class RecipeFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_recipe_layout, container, false);
}
public RecipeFragment(){}
}
1 ответ
Решение
Это не только импорт фрагментов... Вам также нужен менеджер фрагментов поддержки вместо этих
import android.app.FragmentManager;
import android.app.FragmentTransaction;
Тебе нужно getSupportFragmentManager()
вместо getFragmentManager()
при использовании фрагментов поддержки