繁体   English   中英

如何获得onClick function?

[英]How to get the onClick function?

我正在尝试在片段内制作科学计算器。 实际上跟随一个 YT 视频,那个人在他的主要活动中做所有这些,而不是片段。 我在我的片段的 xml 中使用了这段代码:

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

@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);

    previousCalculation = view.findViewById(R.id.previousCalculationView);
    display = view.findViewById(R.id.displayEditText);

}

private void updateText(String strTOAdd) {
    display.setText(strTOAdd);
}

public void zeroBTNPush(View view) {
    updateText("0");
}

我所知道的是,要在片段中使用 findViewById,我必须创建一个 onViewCreated void。 因此,在完成所有这些之后,我应该在 fragment.java>design>attributes>onClick 中获得 updateText function 但我什么也没有在此处输入图像描述我是新手。 请帮忙

您可以像这样在片段代码中设置 OnClickListener

someBtn.setOnClickListener(new OnClickListener(){
    // call the method you want to be excecuted when the buttun is being pressed
})

您也可以在设计中指定它,但例如我更愿意直接使用 XML 代码 - 这对我来说更容易理解

要使用findViewById ,我认为您只需要一个View object,它由onCreateView返回,因此您可以这样做:

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_scientific_calculator, container, false);
    Button btn = view.findViewById(R.id.yourButtonId); 
    btn.setOnClickListener((View v) -> {
        // do something here
    });
}

您可以在onViewCreated中使用传入的视图执行此操作,方法是获取按钮并在其上设置点击侦听器,如下所示:

@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);

    //...

    Button myButton = view.findViewById(R.id.myButton);
    myButton.setOnClickListener((View v) -> {
        // do button stuff
    });
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM