java - 如何获得按钮以在 fragment 中运行函数?

标签 java android onclick onclicklistener

我有一个 fragment ,我想要一个按钮来在我按下它时运行函数 Calculate()。我的 fragment 也基于其中一个模板。

我已经尝试过 XML android:onClick 的东西,虽然我假设它在 MainActivity 而不是 Fragment 里面寻找,所以它会抛出错误。 我还尝试使用另一篇文章中的 OnClickListener,尽管设置它(如在 OnCreateCiew 中的代码中)给出了错误,尽管它可能只是我对它如何工作的业余知识。

这是我的计算函数(单击按钮时我试图运行的函数),它位于 fragment Activity 中:

    public void Calculate(View v) {
        EditText InitialVelocityInput = getView().findViewById(R.id.initialVelocityInput);
        EditText VelocityInput = getView().findViewById(R.id.velocityInput);
        EditText AccelerationInput = getView().findViewById(R.id.accelerationInput);
        EditText TimeInput = getView().findViewById(R.id.timeInput);

        Log.d("bing", "bing");
    }

如果需要,heres the whole fragment activity

当使用 XML onclick 时,我的应用程序只是在按下按钮时崩溃。 使用 OnClickListener 时,我什至无法编译,因为错误。 我没有太多的编码专业知识来了解模板 fragment 代码在做什么,但我认为它与我正在设置 OnClickListener 的方式有冲突。

以下是我尝试设置 OnClickListener 的方式:

    Button calculatebutton;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View kinematicsCalculatorView = inflater.inflate(R.layout.fragment_fragment_calculator_kinematics, container, false);
        calculatebutton = (Button) kinematicsCalculatorView.findViewById(R.id.calculateButton);
        calculatebutton.setOnClickListener(this);
        return kinematicsCalculatorView;
        // Inflate the layout for this fragment
       // return inflater.inflate(R.layout.fragment_fragment_calculator_kinematics, container, false);

    }


    public void onClick(View v) {
        EditText InitialVelocityInput = getView().findViewById(R.id.initialVelocityInput);
        EditText VelocityInput = getView().findViewById(R.id.velocityInput);
        EditText AccelerationInput = getView().findViewById(R.id.accelerationInput);
        EditText TimeInput = getView().findViewById(R.id.timeInput);

        Log.d("bing", "bing");
    }

但是,calculatebutton.setOnClickListener(this); 中的 this 显示为错误,(setOnClickListener(android.view.View.OnClickListener) in View 不能应用于 (com.example.myApp.FragmentCalculatorKinematics))。 onClick 方法显示为从未使用过。

最佳答案

我找到了一些解决方案... 我没有将我的方法放在 FragmentActivity 中,而是将它放在 MainActivity 中并在 fragment 的 XML 文件中设置 android:OnClick="Calculate"。虽然我不确定这样做是否有任何反作用。

关于java - 如何获得按钮以在 fragment 中运行函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56305143/

相关文章:

android - 如何更改标记图标被点击的内容?

android - 计算Region的总面积

android - setText 后的 TextView 和 Size

java - Log4j2 和 Maven - 选择错误的配置文件

java - 使用 JPanel 列表制作表格

java - 如何将字符串转换为双[][]

html - 我应将哪些 HTML 元素用于点击事件?

调整小程序窗口大小时出现 Java 图表

android - 创建包含主键和 4 个外键的 SQLite 表时出错

c# - 单击 GridView 查找所选行