gpt4 book ai didi

java - Fragment 中的按钮单击事件

转载 作者:行者123 更新时间:2023-12-02 05:13:30 25 4
gpt4 key购买 nike

首先我想说我正在研究Android文档,所以到目前为止我对这个主题还没有太多了解。这是我写的代码:

public class Android extends Fragment {
@Override

public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {

View prime = inflater.inflate(R.layout.android_frag, container, false);

//I have a spinner with multiple choices here. The Spinner has the id 'convtype'
Spinner spinner = (Spinner) prime.findViewById(R.id.convtype);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(getActivity().getBaseContext(),
R.array.planets_array, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);

return prime;
}

private String getGradi(String a) {
return a+"°";
}

//This method is called when I click a button
public void convertStart(View v) {

Spinner spinner = (Spinner) v.findViewById(R.id.convtype);
int indice = spinner.getSelectedItemPosition();
EditText mEdit = (EditText) v.findViewById(R.id.unita);

String gradi = getGradi("65");
mEdit.setText(gradi);

}

}

下面您可以找到有关我在应用程序中创建的按钮的 XML 部分:

<Button
android:id="@+id/button1"
style="?android:attr/buttonStyleSmall"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:text="@string/calcola"
android:onClick="convertStart" />

根据我的理解,这段代码应该是正确的,但是当我尝试在模拟器中运行该应用程序时,会出现错误,它告诉我不幸的是我的应用程序已停止。

我猜 convertStart(View v) 有 v 参数,该参数在方法内部使用,但在 android:onClick 中我没有传递任何参数。有什么建议吗?

最佳答案

问题是您在 android:onClick XML 属性中引用的函数必须驻留在 View 的Context 中。 Fragment 不是 Context,因此 Android 不会在 Fragment 中查找 convertStart(View) 方法。

这记录在 android:onClick 中文档,但这并没有特别清楚地表明“上下文”实际上意味着上下文

如果您想使用 XML 属性,则需要将 convertStart() 放入 Activity 中。或者,您可以在 Fragment 中的 View 上调用 setOnClickListener() 以在 Fragment 中创建回调。

我自己更喜欢后一种方法,因为我发现这样更容易遵循应用程序的逻辑流程。它也不太容易出现因无意操作(例如重命名方法或尝试在其他地方使用此布局)而发生的错误。

关于java - Fragment 中的按钮单击事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27159075/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com