gpt4 book ai didi

java - 在 fragment 中追加文本的方法导致空指针

转载 作者:行者123 更新时间:2023-12-01 14:03:22 27 4
gpt4 key购买 nike

我试图在同一 Activity 中单击另一个 fragment 的按钮时更改 fragment 的 TextView 中的文本。

onCreateView 在类的顶部返回

public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {

View view = inflater.inflate(R.layout.deckbuilder_fragment, container,
false);

return view;
}

我在 onCreateView 和 onStart 之间的任何方法之外声明了 TextView

TextView deckSize;

相同的代码在onCreateView和deckSize()之间的onStart方法中工作正常。

public void onStart() {
super.onStart();
deckSize = (TextView) getView().findViewById(R.id.decksize);
final SharedPreferences defaultDeck = getActivity()
.getSharedPreferences("defaultDeck", Context.MODE_PRIVATE);
deckSize.setText(String.valueOf(defaultDeck.getInt("decksize", 0)));

}

但是空指针出现在第 180 行

public void deckSize() {
deckSize = (TextView) getView().findViewById(R.id.decksize); //line 180
final SharedPreferences defaultDeck = getActivity()
.getSharedPreferences("defaultDeck", Context.MODE_PRIVATE);
deckSize.setText(String.valueOf(defaultDeck.getInt("decksize", 0)));
}

这是编码到 TextView 所在 fragment 中的方法。我在该 fragment 的 XML 布局文件中内置了 TextView。奇怪的是,该方法内部的确切代码也在类树中同一 fragment 的 onStart 方法中,并且工作正常。我在 onStart 方法之前在类中进一步声明了 TextView DeckSize。这是相关的 logcat 文本。

FATAL EXCEPTION: main
java.lang.NullPointerException
at com.maliciousgames.deckbuilder.DeckBuilderFragment.deckSize(DeckBuilderFragment.java:180)
at com.maliciousgames.deckbuilder.DeckBuilder.deckSize(DeckBuilder.java:35)
at com.maliciousgames.deckbuilder.BlockCardBrowserFragment$2.onClick(BlockCardBrowserFragment.java:105)
at android.view.View.performClick(View.java:4240)
at android.view.View$PerformClick.run(View.java:17721)
at android.os.Handler.handleCallback(Handler.java:730)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)

第180行就是这一行

deckSize = (TextView) getView().findViewById(R.id.decksize);

我正在从父 Activity 中的方法调用此 DeckSize 方法

public void deckSize() {

DeckBuilderFragment deckBuilderFragment = new DeckBuilderFragment();
deckBuilderFragment.deckSize();
}

我正在从驻留在同一父 Activity 中的另一个 fragment 调用父 Activity 中的该方法,如下所示

((DeckBuilder) getActivity()).deckSize();

我对 Android 和 Java 还很陌生,非常感谢任何人能够提供的任何帮助或指导。

最佳答案

您正在调用

deckBuilderFragment.deckSize();

就在之后

 DeckBuilderFragment deckBuilderFragment = new DeckBuilderFragment();

所以 onCreateView() 尚未被调用,因此您从未膨胀您的 View ,因此当您调用 deckBuilderFragment.deckSize(); getView( ) 返回 null

关于java - 在 fragment 中追加文本的方法导致空指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19148632/

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