我在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中编写函数
,这可以正常工作有什么想法吗?
由于
答案 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相同的名称方法。
感谢名单。