在单独的类中的click事件上添加android按钮

时间:2014-05-16 13:47:22

标签: android android-button

我在android中有一个按钮,我在fragment_main.xml中定义为 -

<Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/love_button_text" 
    android:onClick="onLoveButtonClicked"
    />

main_activity xml文件如下 -

 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.newa.newapp2.MainActivity"
tools:ignore="MergeRootFrame"         >

    <Button
    android:id="@+id/button2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="100sp"
    android:text="@string/a_button" 
    android:onClick="onLoveButtonClicked1"
    />
</FrameLayout> 

现在因为定义了一个onClick事件,我想在一个单独的类文件中定义如下 -

public class AndroidLove extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {       
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);     
}

public void onLoveButtonClicked1(View view) {       
    TextView tv = (TextView) findViewById(R.id.anotherText);        
    tv.setVisibility(View.VISIBLE);     
}   
  }

这编译很好但在运行时抛出错误

找不到名为onLoveButtonClicked的事件监听器

如果我在MainActivity.java中编写函数

,这可以正常工作

有什么想法吗?

由于

2 个答案:

答案 0 :(得分:1)

在片段类中使用匿名内部类。

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

  View view = inflater.inflate(R.layout.fragment_main,
            container, false);

    Button button = (Button)view.findViewById(R.id.button);


  button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
              //your code here
        }
  }

}

最后从xml中删除它:

android:onClick="onLoveButtonClicked"

答案 1 :(得分:0)

您好,Button位于您的fragment_main.xml文件中

您正在将activity_main中的内容视图设置为AndroidLove活动。

我认为您需要在Fragment中编写onLoveButtonClicked()方法而不是在活动中。


xml和java文件中的方法名必须相同。 将xml文件设置为内​​容视图的activity / fragment必须具有与params相同的名称方法。

感谢名单。