按钮点击不起作用
activity_main.xml中按钮点击不起作用
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:context=".MainActivity" >
<fragment
android:id="@+id/fragment1"
android:name="sithi.test.fragmenttest.Fragment1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RelativeLayout>
fragment1.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button"
android:onClick="btnClick1" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Large Text"
android:textAppearance="?android:attr/textAppearanceLarge" />
</LinearLayout>
ActivityMain.java
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
Fragment1.java
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public class Fragment1 extends Fragment
{
TextView tv;
@Override
public void onStart()
{
// TODO Auto-generated method stub
super.onStart();
tv=(TextView)getView().findViewById(R.id.textView1);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState)
{
// TODO Auto-generated method stub
//inflater.inflate(resource, root, attachToRoot);
return inflater.inflate(R.layout.fragment1, container, false);
}
public void btnClick1(View view)
{
tv.setText("dsdsdasda");
}
}
我创建的XML文件和类这样的,但在btnClick1()
Android的碎片也不能正常工作。 当我点击片段中的按钮时,它会出现错误。我在Fragment类中写了那个按钮点击函数。
您需要在片段代码中分配OnClickListener才能使其工作。请参阅Snicolas对“为什么”的回答。
我重写了onStart()方法并在onStart()方法中分配了OnClickListener。它工作得很好。 – 2013-05-08 08:00:44
@ user2361252'onCreateView'或'onViewCreated'可能是更好的选择。 – 2013-05-08 08:24:49
XML onClick的实现方式是针对活动而不是片段。该活动应拥有btnClick1
方法,而不是片段。
提供日志.. – bakriOnFire 2013-05-08 07:36:35
05-08 12:44:43.156:W/dalvikvm(29123):threadid = 1:线程以未捕获的异常退出(group = 0x40aa6210) 05-08 12:44:43.436:E/AndroidRuntime(29123):致命异常:main 05-08 12:44:43.436:E/AndroidRuntime(29123):java.lang.IllegalStateException:在活动类sithi.test中找不到方法btnClick1(View)。 fragmenttest.MainActivity为视图类android.widget.Button ID为'button1'的onClick处理程序 – 2013-05-08 07:44:14