-1

我在单击按钮时开始新活动时遇到问题,这是我的代码:

package test.project;

import android.app.Activity;
import android.os.Bundle;
import android.content.Intent;
import android.view.View;
import android.view.View.OnClickListener;

public class TestActivity extends Activity implements OnClickListener {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

  View aboutButton = findViewById(R.id.about_content);
        aboutButton.setOnClickListener(this);
    }
public void onClick(View v) {
        switch (v.getId()) {
        case R.id.about_content:
        Intent i = new Intent(this, testit.class);
        startActivity(i);
        break;
        // More buttons go here (if any) ...
        }
    }
}

谁能帮我纠正这个错误

错误线

aboutButton.setOnClickListener(this);

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:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello" />

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Click here" android:layout_gravity="center"
android:text="Click here" android:layout_gravity="center" android:layout_marginTop="30dip"/>
</LinearLayout>

包含 about_content 的 XML 文件是

<?xml version="1.0" encoding="utf-8"?>

<ScrollView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="10dip" >
    <TextView
        android:id="@+id/about_content"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/about_text" />
</ScrollView>

about_content 已在此处定义

<TextView
            android:id="@+id/about_content"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/about_text" />
4

5 回答 5

0

很可能您在 main.xml中没有任何具有 id的内容about_content,这将创建 NullPointerException。

此外,如果aboutButton应该是一个传统的按钮,那么你应该使用这个:

Button aboutButton = (Button) findViewById(R.id.about_content);

添加

因为aboutButton是 TextView,所以使用这个:

TextView aboutButton = (TextView) findViewById(R.id.about_content);

但是这个 TextView必须在传递给 setContentView() 的布局中,否则 findViewById() 将返回 null。

于 2012-05-28T06:36:49.537 回答
0

好吧,你没有发布你的 logcat 输出,但由于这是初学者的常见错误,我会大胆猜测并说你可能得到了一个NullPointerException.

您对 的调用findViewById可能正在返回null,这意味着系统找不到与 给定的 id 关联的视图R.id.about_content。我会仔细检查您的 XML 布局是否有拼写错误。

于 2012-05-28T06:37:42.680 回答
0

那是因为您设置内容视图的“main.xml”...不包含 about_content TextView,它在您发布的另一个 xml 中...

注意:您只能访问 setContentView(R.layout.yourlayout) xml 中存在的那些 R.id ...

于 2012-05-28T07:17:12.940 回答
0

您制作setContentView(R.layout.main);main.xml不包括 View 有 id = R.id.about_content。如果你用它来代替findViewById(R.id.button1);它会起作用。

于 2012-05-28T07:25:11.907 回答
0

这是解决方案

Button aboutButton = (Button)findViewById(R.id.about_content);

并且不要忘记添加testit Activity in Android Manifest

于 2012-05-28T07:39:18.773 回答