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

Я недавно начал на 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);

я наблюдаю button1 = ноль. но когда я набираю 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();
        }
    });
13.10.2009 11:12:35
3 ОТВЕТА

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

2
13.10.2009 12:45:36

Вы назначаете кнопку 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();
            }
        });
    }
}
0
1.08.2012 09:05:08

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

0
27.02.2013 07:37:03