我有一个 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/