我第一次尝试在java / android中编写代码而且我有点沮丧,因为我多年的c#知识似乎对我没什么帮助。
目前我尝试创建一个buttonclick-event,该事件应绑定到动态加载的视图内的按钮。
我的部分活动:
private Button myButton;
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
String selectedMenu=getArguments().getString(ARG_SECTION_NUMBER);
if (selectedMenu==getString(R.string.title_test)) {
View rootView = inflater.inflate(R.layout.fragment_test, container, false);
myButton=rootView.findViewById("@+id/buttonTest"); // ERROR?
myButton.setOnClickListener(this);
return rootView;
}
return null;
}
public void onClick(View v) {
if (v==myButton) {
// magic stuff
}
}
我的按钮定义:
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Test starten"
android:id="@+id/buttonTest"
android:layout_gravity="center_horizontal"
android:onClick="TestSoap_OnClick" />
在“ERROR”行中,我尝试从View中获取Button。我该如何访问它?
只是为了我的理解:因为一个按钮似乎是一个视图:Java中的“View”与C#WinForms中的“Control”相同吗?
答案 0 :(得分:2)
替换
myButton = rootView.findViewById("@+id/buttonTest");
与myButton = (Button) rootView.findViewById(R.id.buttonTest);
预期的int
是R.id
中引用的已创建视图的ID。
答案 1 :(得分:1)
尝试创建一个能够处理onClick的函数:在你的情况下:
public void TestSoap_OnClick(View view){
doSomething();
}
然后按下按钮时,它会自动调用此功能,因为你有:
android:onClick="TestSoap_OnClick"
答案 2 :(得分:0)
尝试从xml中删除android:onClick =“TestSoap_OnClick”行
并替换myButton.setOnClickListener(this); 使用myButton.setOnClickListener(onClick)