вопрос о кнопке - PullRequest
       35

вопрос о кнопке

0 голосов
/ 13 октября 2009

Я недавно начал на Android.

Я написал этот кусок кода

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

public class ArrangeMe extends Activity {
    private Button button1;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);


        this.button1 = (Button)findViewById(R.id.buttonOne);
        this.button1.setOnClickListener(new OnClickListener() {
            //@Override
            public void onClick(View v) {
                finish();
            }
        });
        setContentView(R.layout.main);
    }
}

и мой main.xml выглядит так, как показано ниже

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" android:text="ArrangeMe"/>
<Button android:text="Button01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/buttonOne"></Button>
</LinearLayout>

но когда я прохожу через эту линию

this.button1 = (Button)findViewById(R.id.buttonOne);

Я наблюдаю, кнопка1 = ноль. но когда я набираю R.id. Eclipse предлагает автоматическое завершение buttonOne (что предполагает верное расположение xml!)

где я иду не так?

редактирование:

Интересно, я попробовал следующий код,

все равно кнопка не появляется. он перестал сбой, но кнопка не появляется!

   button1 = new Button(getContext());
    button1.setText("1");
    addView(button1, new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
    button1.setOnClickListener(new OnClickListener() {
        //@Override
        public void onClick(View v) {
            finish();
        }
    });

это выдавало ошибку

я изменил их на

   button1 = new Button(getBaseContext());
    button1.setText("1");
    addContentView(button1, new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
    button1.setOnClickListener(new OnClickListener() {
        //@Override
        public void onClick(View v) {
            finish();
        }
    });

Ответы [ 3 ]

2 голосов
/ 13 октября 2009

Я думаю, вы должны вызвать setContentView (R.layout.main); После этого вам нужно знать класс активности, чтобы найти представления.

0 голосов
/ 27 февраля 2013

Вы должны использовать маленькую букву для идентификатора вашего представления, а во-вторых, построить свой проект и очистить, что может генерировать идентификатор для кнопки в R.java.

0 голосов
/ 01 августа 2012

Вы назначаете кнопку 1 перед установкой ContentView в своей деятельности. Измените свой код следующим образом,

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

public class ArrangeMe extends Activity {
    private Button button1;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main); // you misplaced this line in your code


        this.button1 = (Button)findViewById(R.id.buttonOne);
        this.button1.setOnClickListener(new OnClickListener() {
            //@Override
            public void onClick(View v) {
                finish();
            }
        });
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...