当我像这样编写代码时,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);
}
}
“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);
}
}
这是我的 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();
}
}
但是我不能使用“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();
}
}
当我尝试编译它时,错误是:“错误:找不到适合 add(int,AndresFragment) 的方法 getSupportFragmentManager().beginTransaction().add(R.id.my_fragment_container, myFragment).commit();"
最佳答案
您在 AndresFragment
中导入错误。
代替:
import android.app.Fragment;
你应该使用:
import androidx.fragment.app.Fragment;
在你的第一个文件中,你有正确的导入,这就是为什么你在那里没有错误,android.app.Fragment
是旧的并且不推荐使用,所以这就是你收到错误消息的原因,因为你应该使用新的。
关于java - Default constructor is deprecated,我在Android Studio中找不到片段问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65053923/