4

これは 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" />

これはJavaコードです:

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 {

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

int counter;
Button add, sub;
TextView display;

@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);
    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);
        }
    });

    return true;
}

}

ボタンを押しても、テキストビューのテキストには何も起こりません。

助けてください。どのボタンが押されたかに応じて、加算または減算した後のカウンターの値をディスプレイに表示したい。

4

5 に答える 5

2

コードを間違った場所に配置しました。ここではメニューで処理していないのでpublic boolean onCreateOptionsMenu(Menu menu) {}、ボタンに配置する必要はありません。アクション/発火はありません

これを動かす

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() メソッドに追加して、もう一度実行してみてください

于 2013-03-13T06:40:47.940 に答える
0
public class MainActivity extends Activity {

    @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);
            }
        });

    }

    int counter;
    Button add, sub;
    TextView display;

    @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;
    }
}
于 2013-03-13T06:40:09.063 に答える
0

以下で説明するように、 onCreateOptionsMenu ではなく onCreate メソッドですべてのことを行います

// コードの下

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;
}

}
于 2013-03-13T06:42:17.663 に答える
0

問題:

AndroidのドキュメントfindViewById自体には、onCreate自体で使用することになっていると書かれています:

onCreate(Bundle) は、アクティビティを初期化する場所です。最も重要なことは、ここでは通常、UI を定義するレイアウト リソースで setContentView(int) を呼び出し、findViewById(int) を使用して、プログラムで操作する必要があるその UI 内のウィジェットを取得することです。

ただし、CreateOptionsMenu でそれらを使用しています。次の手順を実行します。

最初に、これらの宣言をクラス レベルで行います。

public class MainActivity extends Activity {
int counter;
  Button add, sub;
 TextView display;
//......more code below

このコードをonCreate(Bundle savedInstanceState) {ではなく に移動しますonCreateOptionsMenu(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);
    }
});
}
于 2013-03-13T06:39:34.553 に答える
0

onCreate メソッド内でタスクを実行する必要があります。onCreateOptionsMenu(Menu menu) メソッドは、オプション メニューのタスクを実行するために使用されます。そのため、onCreate メソッド内のコードを置き換えてください。完全なコードを以下に示します。交換して試してみてください。うまくいけばうまくいくでしょう:)

      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;
   }

  }

于 2013-03-13T06:47:33.487 に答える