gpt4 book ai didi

android - 如何避免 fragment 中的非默认构造函数?

转载 作者:搜寻专家 更新时间:2023-11-01 08:03:38 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Why do I want to avoid non-default constructors in fragments?

(6 个回答)


9年前关闭。




我目前正在开发一个 android 应用程序,它突然给了我这些错误(它曾经像这样工作,这是奇怪的部分):

避免在 fragment 中使用非默认构造函数:改用默认构造函数加上 Fragment#setArguments(Bundle)



这个 fragment 应该提供一个默认构造函数(一个没有参数的公共(public)构造函数)

这是代码:

public DatePickerFragment(ProjectOverviewFragment list){
this.list = list;
Calendar cal = Calendar.getInstance();

date = cal.get(Calendar.DAY_OF_MONTH)+"-"+cal.get(Calendar.MONTH)+"-"+cal.get(Calendar.YEAR);
}

最佳答案

您必须像这样调用 fragment :

    int id;

Fragment newFragment = CountingFragment.newInstance(id);
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.simple_fragment, newFragment);
ft.addToBackStack(null);
ft.commit();

public static class CountingFragment extends Fragment {
int mNum;

static CountingFragment newInstance(int num) {
CountingFragment f = new CountingFragment();
Bundle args = new Bundle();
args.putInt("num", num);
f.setArguments(args);

return f;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mNum = getArguments() != null ? getArguments().getInt("num") : 1;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment, container, false);
View tv = v.findViewById(R.id.text);
((TextView)tv).setText("Hello. This is fragment example #" + mNum);
tv.setBackgroundDrawable(getResources().getDrawable(android.R.drawable.gallery_thumb));
return v;
}
}

关于android - 如何避免 fragment 中的非默认构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17422111/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com