在android中使用简单的文本视图和按钮小部件

时间:2014-11-15 20:31:13

标签: java android

我试图制作一个基本程序,按下按钮,它会添加一个整数。我无法更新文本视图。

package com.example.curtis.simpleapplication;

import android.app.Activity; 
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;


public class MainActivity extends Activity {
    int num;
    TextView numview;

    private void updateNumber(){
        TextView numview = (TextView)findViewById(R.id.Number);
        numview.setText(num);
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        setupButton();
    }
    private void setupButton() {
        Button button = (Button) findViewById(R.id.Button);
        button.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                num = num + 1;
                numview.setText(num);
            }

        });
    }

帮助将是很好的我试图进入Android和书籍没有非常有帮助

4 个答案:

答案 0 :(得分:3)

这里有一些错误。首先,您永远不会调用updateNumber(),因此永远不会设置numview。此外,您TextView numViewMainActivity中的updateNumber()一次全局activity_main.xml。有一种更好的方法可以做到这一点。但首先转到android:onClick="onClick"文件,然后在按钮标记中添加如下所示的行<Button android:id="@+id/button1" ... android:onClick="onClick"/>

package com.example.curtis.simpleapplication;

import android.app.Activity; 
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;


public class MainActivity extends Activity {
     int num = 0;
     TextView numview;

     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);

         numview = (TextView)findViewById(R.id.Number);
    }

    public void onClick(View view){
        num += 1;
        numview.setText(String.valueOf(num));
    }
}

接下来在MainActivity.java中添加以下代码行:

android:onClick
由于{{1}}属性,单击按钮时会自动调用

onClick()。

答案 1 :(得分:1)

您有两个具有相同名称的不同对象,这会导致错误。

其中一个在您的类中定义(TextView numview;),另一个在您的函数更新编号中定义。

在您的onClick方法中,您想要更改类中定义的numView,并且它未初始化。您必须添加更改代码:

package com.example.curtis.simpleapplication;

import android.app.Activity; 
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;


public class MainActivity extends Activity {
    int num;
    TextView numview;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        numview = (TextView)findViewById(R.id.Number);
        setupButton();
    }
    private void setupButton() {
        Button button = (Button) findViewById(R.id.Button);
        button.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                num = num + 1;
                numview.setText(num);
            }

        });
    }

答案 2 :(得分:0)

将此代码放入onClick函数

num = num + 1; updateNumber();

答案 3 :(得分:0)

你永远不会打电话给updateNumber()

package com.example.curtis.simpleapplication;

import android.app.Activity; 
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;


public class MainActivity extends Activity {
int num=0;
TextView numview;

private void updateNumber(int number){
    numview = (TextView)findViewById(R.id.Number);
    numview.setText(number);
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    setupButton();
}
private void setupButton() {
    Button button = (Button) findViewById(R.id.Button);
    button.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            num = num + 1;
            updateNumber(num);
        }

    });
}