Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 单击按钮不会更改textview值_Android_Eclipse_Textview - Fatal编程技术网

Android 单击按钮不会更改textview值

Android 单击按钮不会更改textview值,android,eclipse,textview,Android,Eclipse,Textview,这是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:paddingBottom="@dimen/activity_vert

这是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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:gravity="center"
    android:text="Your total is 0"
    android:textSize="20dp" />

<Button
    android:id="@+id/button2"
    android:layout_width="250dp"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/button1"
    android:layout_centerVertical="true"
    android:text="Subtract one"
    android:textSize="20dp" />

<Button
    android:id="@+id/button1"
    android:layout_width="250dp"
    android:layout_height="wrap_content"
    android:layout_below="@+id/textView1"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="62dp"
    android:text="Add one"
    android:textSize="20dp" />
当我按下按钮时,文本视图文本完全没有任何变化


请帮忙。我希望显示器根据按下的按钮显示加法或减法后计数器的值。

问题:

android本身说,应该在onCreate自身中使用
findViewById

onCreate(Bundle)是初始化活动的地方。最 重要的是,这里通常使用 布局资源定义您的UI,并使用findViewById(int)来 检索UI中需要与之交互的小部件 以编程方式

但您正在CreateOptions菜单中使用它们。请执行以下步骤:

首先,在类级别进行以下声明:

public class MainActivity extends Activity {
int counter;
  Button add, sub;
 TextView display;
//......more code below
将这段代码移到您的
onCreate(Bundle savedInstanceState){
,而不是
onCreate选项菜单(Menu Menu){
。尤其是计数器代码

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

   //assigning initial value to counter

 counter = 0;//counter set

//getting the controls

    add = (Button) findViewById(R.id.button1);
    sub = (Button) findViewById(R.id.button2);
    display = (TextView) findViewById(R.id.textView1);

//setting Listeners

    add.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        counter++;

        display.setText("Your total is " + counter);
    }
});

sub.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        counter--;

        display.setText("Your total is " + counter);
    }
});
}

您将代码放置在错误的位置。您没有在此处使用菜单进行处理,因此不需要将您的代码放置在
public boolean oncreateoptions菜单(菜单菜单){}
中。该按钮将不会执行任何操作/触发

移动这个

counter = 0;
    add = (Button) findViewById(R.id.button1);
    sub = (Button) findViewById(R.id.button2);
    display = (TextView) findViewById(R.id.textView1);
    add.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            counter++;

            display.setText("Your total is " + counter);
        }
    });

    sub.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            counter--;

            display.setText("Your total is " + counter);
        }
    });

创建一个onCreate()方法,然后再次尝试运行它

执行onCreate方法中的所有操作,而不是onCreateOptions菜单中的所有操作,如下所述

//以下代码

int counter;
Button add, sub;
TextView display;

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

counter = 0;
add = (Button) findViewById(R.id.button1);
sub = (Button) findViewById(R.id.button2);
display = (TextView) findViewById(R.id.textView1);
add.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        counter++;

        display.setText("Your total is " + counter);
    }
});

sub.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        counter--;

        display.setText("Your total is " + counter);
    }
});


}

@Override
public boolean onCreateOptionsMenu(Menu menu) {

return true;
}

}

您必须在onCreate方法中执行任务。onCreateOptionsMenu(菜单菜单菜单)方法用于在选项菜单中执行任务。因此,请在onCreate方法中替换代码。 下面给出了完整的代码。请替换它并尝试一下。希望它能正常工作:)


您必须将代码放入oncreate方法而不是OnCreateOptionsMenuca中,您能解释一下吗?非常想了解解释吗?您是否遇到崩溃?如果没有,我相信您的onCreateOptionsMenu函数没有被调用。为什么需要在oncreate()中调用getMenuInflater()方法?很高兴知道。如果我的答案有助于解决您的问题,请将其标记为答案。@AshishGarg不客气。如果这个答案有助于您接受它并投票。谢谢
counter = 0;
    add = (Button) findViewById(R.id.button1);
    sub = (Button) findViewById(R.id.button2);
    display = (TextView) findViewById(R.id.textView1);
    add.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            counter++;

            display.setText("Your total is " + counter);
        }
    });

    sub.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            counter--;

            display.setText("Your total is " + counter);
        }
    });
int counter;
Button add, sub;
TextView display;

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

counter = 0;
add = (Button) findViewById(R.id.button1);
sub = (Button) findViewById(R.id.button2);
display = (TextView) findViewById(R.id.textView1);
add.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        counter++;

        display.setText("Your total is " + counter);
    }
});

sub.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        counter--;

        display.setText("Your total is " + counter);
    }
});


}

@Override
public boolean onCreateOptionsMenu(Menu menu) {

return true;
}

}
      package com.example.helloworld;

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

        public class MainActivity extends Activity {

int counter;
Button add, sub;
TextView display;

   @Override
  protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
   setContentView(R.layout.activity_main);
    counter = 0;
   add = (Button) findViewById(R.id.button1);
   sub = (Button) findViewById(R.id.button2);
   display = (TextView) findViewById(R.id.textView1);
   add.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        counter++;

        display.setText("Your total is " + counter);
    }
});

sub.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        counter--;

        display.setText("Your total is " + counter);
    }
});
}



     @Override
     public boolean onCreateOptionsMenu(Menu menu) {
     // Inflate the menu; this adds items to the action bar if it is present.
      getMenuInflater().inflate(R.menu.main, menu);


       return true;
   }

  }