gpt4 book ai didi

java - Android fragment 和空对象引用

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:16:58 25 4
gpt4 key购买 nike

我正在努力让我的 fragment 工作,但无论我想做什么,我都无法完成它。

我得到的错误是:

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference

代码如下:

public class FragmentOne extends Fragment {

private TextView one;

public FragmentOne() {
// Required empty public constructor
}

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

one = (TextView) getActivity().findViewById(R.id.one);

// Displaying the user details on the screen
one.setText("kjhbguhjg");

}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment1, container, false);

}
}

不知道为什么它不起作用。我正在测试这个类只是为了看看 TextView 上的文本是否会被更改。我使用的是正确的 id,因为我检查了 10 次,但我认为问题是因为 textview one 是一个空对象。但是为什么找不到id呢?

最佳答案

onCreate()onCreateView() 之前调用,因此您将无法在 onCreate() 中访问它。

解决方案:移动

one = (TextView) getActivity().findViewById(R.id.one);

改为 onViewCreated()

有关 fragment lifecycle 的概述,请参见下图.

新的代码 fragment 如下所示:

public class FragmentOne extends Fragment {


private TextView one;

public FragmentOne() {
// Required empty public constructor
}

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment1, container, false);
}

@Override
public void onViewCreated(View view, Bundle savedInstanceState){
one = (TextView) getActivity().findViewById(R.id.one);
// Displaying the user details on the screen
one.setText("kjhbguhjg");
}
}

Fragment lifecycle

关于java - Android fragment 和空对象引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33469159/

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