Código antes del problema setContentView
Mi pregunta es si es posible escribir código antes de setContentView()
en el método onCreate()
de la Activity
principal. En el código siguiente quiero llamar a setVariables()
antes de setContentView()
pero esto hace que mi aplicación se bloquee. Si llamo setVariables()
después de setContentView()
, funciona bien. ¿Por qué es esto?
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; } } }
- Mostrar Light AlertDialog usando Theme.Light.NoTitleBar
- ¿Cómo llamar a la función con callbacks en Java como lo hago en C #?
- No hay opción de método DataTypeConverter en android
- Cómo pasar valores hexadecimales a una cadena - Android
- KSoap2 y KvmSerializable-Envía el objeto de clase con un campo de lista a webservice en java android
- Cómo imprimir el mensaje devuelto de HttpResponse?
- BroadcastReceiver no recibe la acción completa de descarga
- ¿Cómo puedo interceptar pulsaciones de botón en el auricular en Android?
- ¿Hay un lenguaje de scripting que puedo incrustar en mi aplicación Java en android
- La consulta parametrizada lanza IllegalArgumentException: No se puede enlazar el argumento
- Qt para Andorid en OpenSuse 13.2
- Cómo enviar datos a la misma aplicación instalada en otro dispositivo android usando wifi
- NullPointerException en getDefaultSharedPreferences
Puede ejecutar cualquier código que desee antes del método setContentView()
siempre que no se refiera a (partes de) la View
, que aún no está configurada.
Dado que su método setVariables()
se refiere al contenido de la View
, no se puede ejecutar.
El método setContentView()
establece el contenido de su archivo XML como View
, que se muestra en la Activity
.
Estás llamando a setVariables()
antes de que hayas especificado una View
para mostrar.
Por eso surge el error. El compilador no sabe a qué punto pertenece View
. Si desea utilizar un ResourceView
, debe establecerlo primero.
- onTouchEvent () of Activity se dispara 3 veces?
- ListView: ¿Cómo agregar datos en ArrayAdapter personalizado?