Android:使用按钮编辑文本字段

时间:2014-05-01 09:46:38

标签: java android button textview

我为一个简单的游戏编写了这段代码。基本上,我希望玩家在10秒内尽可能多次按下按钮。一切正常,代码甚至可以编译,但是当我启动应用程序时,它没有显示分数(Text field为空)。我做错了什么?

public class ButtonActivity extends Activity implements OnClickListener {

private int score;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_button);
    new CountDownTimer(11000, 1000) {

         TextView TimerText = (TextView) findViewById(R.id.TimerText);

         public void onTick(long millisUntilFinished) {
             TimerText.setText("" + millisUntilFinished / 1000);
         }

         public void onFinish() {
            setContentView(R.layout.activity_score);
         }
    }.start();
}

private void screenUpdate() {
    TextView screenPoints = (TextView) findViewById(R.id.Scoringboard);
    screenPoints.setText(String.valueOf(score));
}

@Override
public void onClick(View view) {
    Button button = (Button) findViewById(R.id.button1);
    button.setOnClickListener(this);
    score++;
    screenUpdate();     
}

}

3 个答案:

答案 0 :(得分:1)

尝试在onCreate()中移动这两行。

Button button =(Button) findViewById(R.id.button1);
button.setOnClickListener(this);

基本上只有在点击监听器被附加时才会调用onClick ...并且你不能将它附加在onClick中,因为它在被附加之前不会被调用:)。在onCreate中移动2行可确保连接侦听器。

答案 1 :(得分:0)

首先,您在onCreate()方法上移动此代码。

 Button button =(Button) findViewById(R.id.button1);
 button.setOnClickListener(this);

答案 2 :(得分:0)

// try this way, hope this will help you...

**XML** code

**activity_button**
<?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:gravity="center"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/txtTimer"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="20sp"
        android:textStyle="bold"
        android:layout_marginTop="10dp"/>

    <Button
        android:id="@+id/btnScore"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:text="Click For Score"/>

</LinearLayout>

**activity_score**
<?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:gravity="center"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/txtScore"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="20sp"
        android:textStyle="bold"/>

</LinearLayout>

**ACTIVITY** code

**ButtonActivity**
    // try this way, hope this will help you...

    **XML** code

    **activity_button**
    <?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:gravity="center"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/txtTimer"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="20sp"
            android:textStyle="bold"
            android:layout_marginTop="10dp"/>

        <Button
            android:id="@+id/btnScore"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:text="Click For Score"/>

    </LinearLayout>

    **activity_score**
    <?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:gravity="center"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/txtScore"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="20sp"
            android:textStyle="bold"/>

    </LinearLayout>

    **ACTIVITY** code

    **ButtonActivity**
    public class ButtonActivity extends Activity {

        private TextView txtScore ;
        private TextView txtTimer ;
        private Button btnScore;
        private int score;


        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_button);
            txtTimer = (TextView) findViewById(R.id.txtTimer);
            btnScore = (Button) findViewById(R.id.btnScore);
            new CountDownTimer(11000, 1000) {

                public void onTick(long millisUntilFinished) {
                    txtTimer.setText("Hurry!!!,You Have Only "+(millisUntilFinished / 1000)+" Second Left.");
                }

                public void onFinish() {
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            setContentView(R.layout.activity_score);
                            txtScore = (TextView) findViewById(R.id.txtScore);
                            txtScore.setText("Your Score Is >> "+score);
                        }
                    });
                }
            }.start();
            btnScore.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    score++;
                }
            });
        }

    }