java - 无法通过 v4.app.Fragment 导入解决 ResolveFragmentTransaction.add() 问题

标签 java android android-fragments

我正在尝试动态创建 fragment ,但收到以下错误消息:

Cannot resolve method 'add(int, com.brewguide.android.coffeebrewguide.RecipeFragment)

我查找的其他答案表明 fragment 的库导入已关闭,因此我添加了库导入 v4.app.Fragment 而不是 app.Fragment code> 到 fragment 和调用 fragment 的 Activity ,问题并没有消失。下面是我的代码:

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(){}

}

最佳答案

这不仅仅是 fragment 导入...您还需要支持 fragment 管理器而不是这些

import android.app.FragmentManager;
import android.app.FragmentTransaction;

使用支持 fragment 时,您需要 getSupportFragmentManager() 而不是 getFragmentManager()

关于java - 无法通过 v4.app.Fragment 导入解决 ResolveFragmentTransaction.add() 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45537846/

相关文章:

java - 类在签名 Jar 文件之前找到,但不在签名之后找到

Android 将当前的 Fragment 类转换为 Activity 类

安卓编程: I cant get data to reload into arrayadapter

即使在 onCreateView 中初始化后,android fragment View 也会抛出空指针异常

java - .listFiles() 返回的文件对象在 .exists() 上返回 false - 文件包含特殊字符

java - 覆盖Web项目中使用的库中的类

Java Intellij : Make change on external lib code and take effect immediately

Android:ScaleType ="fitXY"不适用于所有图像

android - 如何检测 SpannableStringBuilder android 中的特定单词?

java - 如何使用两个 url 调用异步任务