0

Where do i declare a custom button in my main activity class? Can it be on the onStart Method or will it only work in the onCreate Method?

Any Help would be appreciated?

Also to further illustrate what i am talking about: Here is my activity class.

public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            if(D) Log.e(TAG, "+++ ON CREATE +++");
            setContentView(R.layout.main);



            mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
            if (mBluetoothAdapter == null) {
                Toast.makeText(this, "Bluetooth is not available", Toast.LENGTH_LONG).show();
                finish();
                return;
                }        
        }
    @Override
        public void onStart() {
            super.onStart();
            if(D) Log.e(TAG, "++ ON START ++");
            // If BT is not on, request that it be enabled.
            if (!mBluetoothAdapter.isEnabled()) {
                Intent enableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
                startActivityForResult(enableIntent, REQUEST_ENABLE_BT);
                } 
            else {
                startApp();
                }
            }
private void startApp(){

        View Patient_Button = findViewById(R.id.patientButton);
        Patient_Button.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
            //case R.id.patientButton:
                //Intent b = new Intent(getApplicationContext(), Detailed_ModeActivity.class);
                //startActivity(b);
                //break;
                }
            }
        );
        View Doctor_Button = findViewById(R.id.doctorButton);
        Doctor_Button.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                Intent a = new Intent(getApplicationContext(), Detailed_ModeActivity.class);
                startActivity(a);
                //break;
                }
            }
        );
        View About_Option = findViewById(R.id.aboutButton);
        About_Option.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                Intent c = new Intent(getApplicationContext(), About.class);
                startActivity(c);
                //break;
                }
            }
        );

*

main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:background="@color/background"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="85dip" 
    android:orientation="horizontal">
    <LinearLayout 
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_gravity="center" android:orientation="vertical">
        <TextView 
            android:text="@string/mainTitle"
            android:layout_width="fill_parent" 
            android:layout_height="wrap_content" 
            android:layout_gravity="center"
            android:layout_marginBottom="25dip"
            android:textSize="24.5sp"/>


        <!-- Patient Option -->
        <Button android:layout_width="fill_parent"
                android:layout_height="wrap_content" 
                android:layout_weight="1"
            android:text="@string/patientButton"
            android:id="@+id/patientButton">
        </Button>

        <!-- Doctor Option -->
        <Button android:layout_width="fill_parent"
            android:layout_height="wrap_content" 
            android:text="@string/doctorButton"
            android:layout_weight="1"
            android:id="@+id/doctorButton">
        </Button>

        <!-- Exit Mode -->
        <Button android:text="@string/exit" 

         android:layout_weight="1"
         android:id="@+id/exit" 
         android:layout_width="fill_parent" 
         android:layout_height="wrap_content"></Button>

         <!-- About Mode -->
        <Button android:text="@string/aboutButton" 

         android:layout_weight="1"
         android:id="@+id/aboutButton" 
         android:layout_width="fill_parent" 
         android:layout_height="wrap_content"></Button>

    </LinearLayout>



</LinearLayout>
YoKaGe
  • 385
  • 2
  • 7
  • 15

2 Answers2

2

In Android, I believe it is conventional to declare a button in the onCreate() method. As @Mike D said, you can also create a controller and instantiate that in this onCreate() method. Although your question is not too clear on what problem you are having with this, it seems that you are simply looking for an answer between those choices- onStart() and onCreate().

For Example,

public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    Button sampleButton = (Button) findViewById(R.id.sampleButton);
} 

In this scenario, you would have the button declared in your main.xml file and the id of this button would be sampleButton.

Furthermore, for future reference, it is very important that you look at the chart on this page to see the Android Activity life cycle and what to place where. This will not only answer this question, but give you room to study such a concept on your own.

Kgrover
  • 2,106
  • 2
  • 36
  • 54
0

Give RoboGuice a try to speed up your development and so you don't need to worry about these minor details too much.

drunkenRabbit
  • 394
  • 5
  • 15
  • Please elaborate the content in the link – Freakyuser Apr 04 '13 at 17:25
  • Sure. RoboGuice speeds development by handling most of the initialization calls for you. So, in the onCreate(...) method you do not need to findViewById(...) for all your resources (ie. buttons, etc.) The Wiki has a good example and further explanation https://github.com/roboguice/roboguice/wiki – drunkenRabbit Apr 04 '13 at 17:32
  • ahaa, I wanted you to edit your own answer and append the above contents of the above comment to the answer. Then wait for the questioner to accept your answer or others to upvote. – Freakyuser Apr 05 '13 at 16:10