Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 实例化onClick()中的ui元素与片段中的onCreateView_Java_Android_Onclick_Fragment - Fatal编程技术网

Java 实例化onClick()中的ui元素与片段中的onCreateView

Java 实例化onClick()中的ui元素与片段中的onCreateView,java,android,onclick,fragment,Java,Android,Onclick,Fragment,我意识到,当我在onClick()方法中实例化matchStatus时,我会得到一个NullPointerException,但当我在onCreateView()方法中执行该操作时,它工作得很好。有人能解释一下为什么吗 我的猜测是,它在onClick()方法中不起作用,因为它连接到保存片段的活动,并且它在活动中查找matchStatus,而在onCreateView()方法中不会发生这种情况,因为我正在膨胀片段_one.xml,但我不确定 感谢您的帮助:)您已经在onCreateView中声明了

我意识到,当我在onClick()方法中实例化matchStatus时,我会得到一个NullPointerException,但当我在onCreateView()方法中执行该操作时,它工作得很好。有人能解释一下为什么吗

我的猜测是,它在onClick()方法中不起作用,因为它连接到保存片段的活动,并且它在活动中查找matchStatus,而在onCreateView()方法中不会发生这种情况,因为我正在膨胀片段_one.xml,但我不确定


感谢您的帮助:)

您已经在
onCreateView
中声明了主视图。所以你不能从onclick访问它。在onclick中,您可以使用
查看
,这实际上是您的按钮

对视图使用全局变量。在onCreateView中启动它。你可以在任何地方使用

public class FragmentOne extends Fragment implements View.OnClickListener{

public FragmentOne() {}

TextView matchStatus;

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

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

    Button matchButton = (Button)view.findViewById(R.id.button_match);
    matchButton.setOnClickListener(this);


    return view;
}

@Override
public void onClick(View view){
    switch(view.getId()){
        case R.id.button_match:
            matchStatus = (TextView)view.findViewById(R.id.textView_matchStatus);

            matchStatus.setText("sup");
            break;
    }
}

嘿,谢谢你的帮助。这当然是可行的,但我也想知道为什么像上面那样实例化是行不通的。谢谢:)因为您的主视图变量位于局部变量onCreateView方法中。所以,当你想从另一个方法(onClick)访问它时,你得到了空值。这是有道理的,即使当我比较这两个视图时,它们似乎是相同的。你从中得到了答案吗?
public class FragmentOne extends Fragment implements View.OnClickListener{

    public FragmentOne() {}
    View rootview;
    TextView matchStatus;

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

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

        Button matchButton = (Button)rootview.findViewById(R.id.button_match);
        matchButton.setOnClickListener(this);


        return rootview;
    }

    @Override
    public void onClick(View view){
        switch(view.getId()){
            case R.id.button_match:
                matchStatus = (TextView)rootview.findViewById(R.id.textView_matchStatus);

                matchStatus.setText("sup");
                break;
        }
    }