Java 将变量从自定义类传递到片段(Android)

Java 将变量从自定义类传递到片段(Android),java,android,android-fragments,nullpointerexception,fragment,Java,Android,Android Fragments,Nullpointerexception,Fragment,我目前正在为我的项目使用android,我不知道如何将变量从自定义类传递到片段。我可以在MainActivity和Fragment之间交换变量,但在自定义类和Fragment中不能使用相同的方法 我在MainActivity和Fragment之间发送变量的方式如下 在片段文件中: 公共类第四个片段扩展片段{ 主要活动; @凌驾 公共void-onAttach(上下文){ super.onAttach(上下文); 活动=(MainActivity)getActivity(); }这是因为您将上下

我目前正在为我的项目使用android,我不知道如何将变量从自定义类传递到片段。我可以在MainActivity和Fragment之间交换变量,但在自定义类和Fragment中不能使用相同的方法

我在MainActivity和Fragment之间发送变量的方式如下

在片段文件中:

公共类第四个片段扩展片段{
主要活动;
@凌驾
公共void-onAttach(上下文){
super.onAttach(上下文);
活动=(MainActivity)getActivity();

}
这是因为您将上下文强制转换为MainActivity,因此在这种情况下,您需要更一般。仅对变量使用Activity。并在强制转换之前检查类型

Activity activity;

...

@Override
public void onAttach(Context context) {
    super.onAttach(context);
    if(getActivity() instanceOf MainActivity){
        activity = (MainActivity) getActivity();
    } else if(getActivity() instanceOf CustomActivity){
        activity = (CustomActivity) getActivity();
    }
}

你的
activity
变量为空。你提交了片段吗?我在你的代码中没有看到你这样做的地方

使用
FragmentManager
提交片段并将其附加到其活动。通常,您将在
activity.onCreate()
中提交片段,但也可以根据您的用例在其他地方提交

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if(savedInstanceState == null) {
        getSupportFragmentManager().beginTransaction().add(R.id.my_fragment_container, new FourthFragment()).commitNow();
    }

}
一旦提交并附加了片段,就不应该再出现空指针异常


我之所以使用MainActivity,是因为我将所有与蓝牙连接的方法都放在那里,并通过片段调用这些方法将变量发送到外部。如果我将其更改为Activity,是否可以?很抱歉,我昨晚很困,弄不清应该在哪里更一般。为什么是两个
if()
s如果您可以使用
|
来合并条件?不,您不能,因为每个if都有不同的结果,我不知道他想使用多少自定义活动,所以他知道为N个活动创建此项。