Code before calling setContentView

My question is whether it is possible to write the code before setContentView()in the onCreate()main method Activity. In the code below, I want to call setVariables()before setContentView(), but this will crash my application. If I call setVariables()after setContentView(), it works fine. Why is this?

package com.oxinos.android.moc;


import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.res.Resources;
import android.os.Bundle;
import android.view.View;
import android.widget.CheckBox;


public class mocActivity extends Activity {
    /** Called when the activity is first created. */

    public static String prefsFile = "mocPrefs";
    SharedPreferences mocPrefs;
    public Resources res;
    public CheckBox cafesCB, barsRestCB, clothingCB, groceriesCB, miscCB;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setVariables();
        setContentView(R.layout.main);

        mocPrefs = getSharedPreferences(prefsFile,0);
    }

    private void setVariables(){
        res = getResources();
        cafesCB = (CheckBox) findViewById(R.id.cafesCheckBox);
        barsRestCB = (CheckBox) findViewById(R.id.barsRestCheckBox);
        clothingCB = (CheckBox) findViewById(R.id.clothingCheckBox);
        groceriesCB = (CheckBox) findViewById(R.id.groceriesCheckBox);
        miscCB = (CheckBox) findViewById(R.id.miscCheckBox);

    }
    public void submitHandler(View view){
        switch (view.getId()) {
        case R.id.submitButton:
            boolean cafes = cafesCB.isChecked();
            boolean barsRest = barsRestCB.isChecked();
            boolean clothing = clothingCB.isChecked();
            boolean groceries = groceriesCB.isChecked();
            boolean misc = miscCB.isChecked();

            SharedPreferences.Editor editor = mocPrefs.edit();

            editor.putBoolean(res.getString(R.string.cafesBool), cafes);
            editor.putBoolean(res.getString(R.string.barsRestBool), barsRest);
            editor.putBoolean(res.getString(R.string.clothingBool), clothing);
            editor.putBoolean(res.getString(R.string.groceriesBool), groceries);    
            editor.putBoolean(res.getString(R.string.miscBool), misc);
            editor.commit();
            startActivity(new Intent(this, mocActivity2.class));
            break;
        }

    }
}
+3
source share
2 answers

You can execute any code that you want before the method setContentView(), if it does not apply to the (part) Viewthat is not yet installed.

Since your method is setVariables()related to content View, it cannot be executed.

+9
source

setContentView() XML View, Activity.

setVariables(), - View, .

. , View. ResourceView, .

+1

All Articles