我正在开发一个非常简单的项目..我所要做的就是改变textView的值。
以下是方案:有一个按钮和一个textView。该textView的默认值为no
。单击该按钮时应为yes
。就是这样。
这是我的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" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="No"
android:textAppearance="?android:attr/textAppearanceMedium" />
</LinearLayout>
这是JAVA代码:
package ir.testApp;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class TestAppActivity extends Activity {
TextView text1;
Button btn1;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btn1 = (Button) findViewById(R.id.button1);
text1 = (TextView) findViewById(R.id.textView1);
btn1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
text1.setText("yes");
}
});
}
}
目前它不起作用。我的意思是当我点击那个按钮时没有任何反应。那有什么不对?
注意:当我将该按钮放在该textView的顶部时,它就像一个魅力。那么为什么当按钮位于textView之后它不起作用?
答案 0 :(得分:1)
btn1 = (Button) findViewById(R.id.button1);
text1 = (TextView) findViewById(R.id.textView1);
btn1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
text1.setText("yes");
}
});
答案 1 :(得分:1)
更改XML中的按钮位置只会更改您的活动视图,但无法解决您的问题。
您正在实例化TextView并在每次点击按钮(!)时设置视图
而不是这样,你必须将TextView实例化为你的按钮,并在你的按钮clickListener中调用setText("yes")
。
public class TestAppActivity extends Activity {
TextView text1;
Button btn1;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btn1 = (Button) findViewById(R.id.button1);
text1 = (TextView) findViewById(R.id.textView1);
btn1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
text1.setText("yes");
}
});
}
}
答案 2 :(得分:1)
试试这个,
text1 = (TextView) findViewById(R.id.textView1);
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
text1.setText("yes");
}
});
注意:最好的方法是,在
listeners
外部初始化所有UI组件。