默认构造函数已弃用,我在 Adroid Studio 中找不到片段问题

Jos*_*sef 3 java android-studio

当我这样编写代码时,ControlFragment 工作正常,但是当我在另一个名为“AndresFragment”的片段(第二个代码)中使用完全相同的代码时,它不起作用。它说“android.app.Fragment 中的默认构造函数已弃用”。我真的不明白...有人可以帮助我吗,我是新来的

package com.example.fragm;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import androidx.fragment.app.Fragment;

public class ControlFragment extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        if (savedInstanceState != null) {

        }
        View myView = inflater.inflate(R.layout.controlfragment,
                container, false);
        return myView;
    }
    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);

    }

}


Run Code Online (Sandbox Code Playgroud)

“AndresFragment”的代码:

package com.example.fragm;

import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class AndresFragment extends Fragment {


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        if (savedInstanceState != null) {
// restore internal values if necessary
        }
        View myView1 = inflater.inflate(R.layout.andresfragment,
                container, false);
        return myView1;
    }
    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的 Mainactivity.java 及其有效的 ControlFragment:

package com.example.fragm;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        if (savedInstanceState != null) {
            return;
        }
        ControlFragment myFragment = new ControlFragment();
        getSupportFragmentManager().beginTransaction().add(R.id.my_fragment_container, myFragment).commit();
    }
}
Run Code Online (Sandbox Code Playgroud)

但我不能使用“AndresFragment”

package com.example.fragm;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        if (savedInstanceState != null) {
            return;
        }
        AndresFragment myFragment = new AndresFragment();
        getSupportFragmentManager().beginTransaction().add(R.id.my_fragment_container, myFragment).commit();
    }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试编译它时,错误是:“错误:找不到适合 add(int,AndresFragment) getSupportFragmentManager().beginTransaction().add(R.id.my_fragment_container, myFragment).commit(); 的方法”

Fil*_*tic 6

您的AndresFragment.

代替:

import android.app.Fragment;
Run Code Online (Sandbox Code Playgroud)

你应该使用:

import androidx.fragment.app.Fragment;
Run Code Online (Sandbox Code Playgroud)

在您的第一个文件中,您有正确的导入,这就是为什么您没有错误,它android.app.Fragment是旧的且已弃用,所以这就是您收到错误消息的原因,因为您应该使用新的文件。