我试图在用户点击图片后更改textView的文本(可能很容易就是一个按钮)。我不断接近力量和nullpointerexception。我正在尝试为Android 2.3.3编写它
该代码基于google上的许多示例。
public class TestImagesActivity extends Activity {
private android.view.View.OnClickListener mCorkyListener = new android.view.View.OnClickListener() {
public void onClick(View v) {
final TextView txt = (TextView) findViewById(R.id.svariable);
txt.setText("new text"); // this line throws an exception
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ImageView image = (ImageView) findViewById(R.id.test_image);
image.setOnClickListener(mCorkyListener);
}
我的main.XML看起来像这样:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android.id="@+id/svariable"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello" />
<ImageView
android:id="@+id/test_image"
android:src="@drawable/test"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
答案 0 :(得分:2)
在您的XML中,您使用 android.id 而不是 android:id 来获取svariable。< / p>
答案 1 :(得分:1)
您在XML中遇到一个小问题:
android.id="@+id/svariable"
应该是:
android:id="@+id/svariable"
答案 2 :(得分:0)
只需将您的XML android.id
更改为android:id
答案 3 :(得分:0)
在调用mCorkyListener
方法之前,在加载活动类时创建变量onCreate
。您可能知道,在致电setContentView(layout)
之前,您无法通知任何观看次数,其中layout
是您观看次数的父视图。因此,侦听器创建代码中的TextView
将始终为null。您应该在setContentView
调用后创建侦听器。希望这会有所帮助。
答案 4 :(得分:0)
我认为值得注意的是,就设备资源而言,findViewById()是一种相当昂贵的方法调用。
您应该在onCreate方法中的此调用中获取TextView引用,然后使用相同的调用来获取imageView引用。这样,每次按下按钮都不会调用它。
答案 5 :(得分:0)
你的问题是一个错字。
android.id="@+id/svariable"
应该是
android:id="@+id/svariable"