1

我第一次尝试在 java/android 中编写代码,我有点沮丧,因为我多年的 c# 知识似乎对我没有多大帮助。

目前,我尝试创建一个按钮单击事件,该事件应该绑定到动态加载的视图内的按钮。

我的部分活动:

 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" />

在“错误”行中,我尝试从视图中获取按钮。我怎样才能访问它?

只是为了我的理解:作为一个按钮似乎是一个视图:Java 中的“视图”与 C# WinForms 中的“控制”大致相同吗?

4

3 回答 3

2

替换 myButton = rootView.findViewById("@+id/buttonTest");myButton = (Button) rootView.findViewById(R.id.buttonTest);

预期的int是已创建的视图的 id,它在 中引用R.id

于 2013-11-15T00:31:45.860 回答
1

尝试创建一个函数来处理你的 onClick: 在你的情况下是这样的:

public void TestSoap_OnClick(View view){
        doSomething();
    }

然后当你按下按钮时,它会自动调用这个函数,因为你有:

android:onClick="TestSoap_OnClick"
于 2013-11-15T00:06:29.617 回答
0

尝试从您的 xml 中删除行 android:onClick="TestSoap_OnClick"

并替换 myButton.setOnClickListener(this); 与 myButton.setOnClickListener(onClick)

于 2013-11-14T22:40:53.223 回答