0

一切看起来都很好,但是当我尝试通过按下按钮更改视图时仍然出现错误。这是代码:

    package com.example.testy;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.ViewFlipper;

public class MainActivity extends Activity {

    ViewFlipper flipper;

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        flipper = (ViewFlipper) findViewById(R.id.viewFlipper1);
        setContentView(R.layout.activity_main);

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

    public void clcik(View v) {
        flipper.showNext();
    }

}

这是我的 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="match_parent"
    android:gravity="top" >

    <ViewFlipper
        android:id="@+id/viewFlipper1"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >

        <Button
            android:id="@+id/button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="click"
            android:text="Button!!" />

        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="TextView!!" />
    </ViewFlipper>

</RelativeLayout>

任何人都知道这段代码有什么问题吗?谢谢你的回答!

4

2 回答 2

1

也许你应该把你的方法的名字改成click?

 public void **clcik**(View v) {
        flipper.showNext();
    }

由于clcik我们的活动代码中的拼写错误 ( ),您可能会收到一个异常,因为 Android 找不到该click方法。

感谢@yugidroid 的回答,我在您的代码中发现了另一个错误:

公共无效 onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    flipper = (ViewFlipper) findViewById(R.id.viewFlipper1);
    setContentView(R.layout.activity_main);

}

findViewById甚至在你有任何意见之前打电话(打电话给setContentView)。因此,您将获得 NullPointException。

我建议您调用方法super.onCreate的第一行onCreate()。这就是谷歌所做的。

关于在布局上设置点击侦听器或在代码上创建侦听器和设置。好吧,没有太大区别,虽然后者肯定更快,因为第一个使用反射,这比仅仅调用一个方法成本更高。

于 2012-08-07T00:04:00.623 回答
0

首先,确保你setContentView(R.layout.activity_main);在 super 之后调用,这是一个很好的做法。

您的问题是您设置android:onClick="click"但您在 Java 中引用了错误的方法(clcik不存在)。

我建议您在活动中声明和设置侦听器,而不是在 xml 中。

于 2012-08-07T00:09:43.540 回答