gpt4 book ai didi

java - 为什么我在 Android Studio 中不断收到 java.lang.nullpointerException?

转载 作者:行者123 更新时间:2023-12-02 04:28:07 27 4
gpt4 key购买 nike

因此,我尝试将一个 fragment 中的文本传递给主 Activity ,并让主 Activity 将其传递给另一个 fragment ,以便可以显示它。

以下是将 fragment 发送到主 Activity 的代码:

public class TopFragment extends Fragment{
private static EditText topInput;
private static EditText bottomInput;

FragmentInterface communicate;

public interface FragmentInterface{
public void sendTheInput(String topText,String bottomText);
}

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.top_fragment,container,false);

topInput = (EditText) view.findViewById(R.id.topInput);
bottomInput = (EditText) view.findViewById(R.id.bottomInput);
final Button submitButton = (Button)view.findViewById(R.id.submitButton);

submitButton.setOnClickListener(
new View.OnClickListener(){
public void onClick(View v){
buttonClicked(v);
}
}
);
return view;
}

public void buttonClicked(View view){
communicate.sendTheInput(topInput.getText().toString(),bottomInput.getText().toString());
}
}

这是主要 Activity 中的代码:

@Override
public void sendTheInput(String topText, String bottomText) {
BottomFragment bottomFrag = (BottomFragment)getSupportFragmentManager().findFragmentById(R.id.bottomFragment);
bottomFrag.setBoxText(topText,bottomText);
}

这是将显示文本的 fragment 的代码:

public class BottomFragment extends Fragment{

private static EditText topTextBox;
private static EditText bottomTextBox;

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.bottom_fragment,container,false);
return view;
}

public void setBoxText(String topText, String bottomText){

topTextBox.setText(topText);
bottomTextBox.setText(bottomText);
}
}

当我运行应用程序时,我没有运行时错误,但是当我单击模拟器中的按钮时,我得到:

08-07 13:20:48.125    4011-4011/com.example.vanessaanthony.fragmentreview E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.example.vanessaanthony.fragmentreview, PID: 4011
java.lang.NullPointerException: Attempt to invoke interface method 'void com.example.vanessaanthony.fragmentreview.TopFragment$FragmentInterface.sendTheInput(java.lang.String, java.lang.String)' on a null object reference
at com.example.vanessaanthony.fragmentreview.TopFragment.buttonClicked(TopFragment.java:44)
at com.example.vanessaanthony.fragmentreview.TopFragment$1.onClick(TopFragment.java:35)
at android.view.View.performClick(View.java:4780)
at android.view.View$PerformClick.run(View.java:19866)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5257)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)

为什么我会收到此错误消息?

最佳答案

您只是忘记在 fragment 中设置communicate。我建议在 onAttach

中执行此操作
public class TopFragment extends Fragment
{
private static EditText topInput;
private static EditText bottomInput;

FragmentInterface communicate;

public interface FragmentInterface{
public void sendTheInput(String topText,String bottomText);
}

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.top_fragment,container,false);

topInput = (EditText) view.findViewById(R.id.topInput);
bottomInput = (EditText) view.findViewById(R.id.bottomInput);
final Button submitButton = (Button)view.findViewById(R.id.submitButton);

submitButton.setOnClickListener(
new View.OnClickListener(){
public void onClick(View v){
buttonClicked(v);
}
}
);
return view;
}

public void onAttach(Activity activity)
{
super.onAttach(activity);
communicate = (FragmentInterface) activity;
}

public void buttonClicked(View view){

communicate.sendTheInput(topInput.getText().toString(),bottomInput.getText().toString());

}
}

确保您的 Activity 实现 FragmentInterface

关于java - 为什么我在 Android Studio 中不断收到 java.lang.nullpointerException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31884320/

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