Androide actividad clase constructor trabajando
Al considerar el caso con la actividad androide, el primer método para trabajar es su onCreate
método .. ¿verdad?
Supongamos que quiero pasar 2 parámetros a la clase de actividad de Android, digamos UserHome
. Para eso estoy creando el constructor de la clase de actividad UserHome
y aceptando los parámetros.
- Android ArrayList <MyObject> pasar como parcelable
- Cómo establecer dinámicamente los parámetros de diseño en Android?
- Obtenga la colección de nombres de parámetros de la url de Java / Android
- SQL Android Formulación de consultas con múltiples condiciones
- Cómo crear un botón de Twitter en Android?
Pero cuando llamamos a una actividad, no estamos inicializando la clase Activity, simplemente estamos creando una intención de la clase UserHome
.
Entonces, ¿cómo podemos pasar los parámetros a esa actividad de otra actividad sin usar la intent.putExtra("keyName", "somevalue");
uso.
Los expertos aclaran cómo podemos cubrir una situación como esta.
- Apertura de linterna en android con diferentes modos
- Android.net.uri getQueryParameterNames () alternativa
- Android AsyncTask como argumento del método
- Algunos parámetros de función denominados arg0, arg1, etc ... después de compilar una biblioteca JAR
- Android, KSoap2 y .NET Web Service w / parameters = Resultado NULL
- ¿Cómo pasar el parámetro a un webservice usando ksoap2?
- Cómo enviar parámetros a un archivo local en un WebView en android?
- Cómo cambiar la velocidad de fotogramas de la cámara para crear vídeo de cámara lenta o lapso de tiempo en Android
No estoy seguro de por qué no quieres usar los params intención. Eso es para lo que están ahí. Si necesita pasar los mismos parámetros de diferentes lugares en su aplicación, podría considerar el uso de un constructor estático que genere su solicitud de intención para usted.
Por ejemplo:
/** * Sample activity for passing parameters through a static constructor * @author Chase Colburn */ public class ParameterizedActivity extends Activity { private static final String INTENT_KEY_PARAM_A = "ParamA"; private static final String INTENT_KEY_PARAM_B = "ParamB"; /** * Static constructor for starting an activity with supplied parameters * @param context * @param paramA * @param paramB */ public static void startActivity(Context context, String paramA, String paramB) { // Build extras with passed in parameters Bundle extras = new Bundle(); extras.putString(INTENT_KEY_PARAM_A, paramA); extras.putString(INTENT_KEY_PARAM_B, paramB); // Create and start intent for this activity Intent intent = new Intent(context, ParameterizedActivity.class); intent.putExtras(extras); context.startActivity(intent); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Extract parameters Bundle extras = getIntent().getExtras(); String paramA = extras.getString(INTENT_KEY_PARAM_A); String paramB = extras.getString(INTENT_KEY_PARAM_B); // Proceed as normal... } }
A continuación, puede iniciar su actividad llamando a:
ParameterizedActivity.startActivity(this, "First Parameter", "Second Parameter");
Puedo ver una situación en la que no puedes usar el método estándar de pasar los parámetros a través de la Intent
: Cuando estás creando una actividad que será lanzada por otra aplicación (por ejemplo, la actividad de edición de un complemento Tasker ) y , Por lo tanto, no tienen control sobre la Intent
que lanzará su actividad.
Es posible crear una Activity
que acepte parámetros en su constructor. El truco para usarlo, sin embargo, no es usarlo directamente, sino usar una clase derivada con un constructor por defecto que llame a super()
con los argumentos apropiados, como tal:
class BaseActivity extends Activity { public BaseActivity(String param1, int param2) { // Do something with param1 and param2. } // Many more lines of awesomeness. } class DerivedActivity extends BaseActivity { public DerivedActivity() { super("param1", 42); } }
Naturalmente, si necesita generar los parámetros para pasar a BaseActivity()
, simplemente puede reemplazar los valores codificados con llamadas de función.
Podemos pasar el valor de la actividad de los padres a la actividad de los niños usando la colección de paquetes y la preferencia compartida. 1. Preferencia Compartida 2. Colección de Paquetes
Transmisión de datos o parámetros a otra actividad Android
Pero también puede crear muy bien un constructor de UserHome.
public class MainActivity extends Activity { UserHome userHome = new UserHome(param1,param2); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); userHome.yourMethod(); }}
MainActivity es una clase como cualquier otra, sólo que se extiende la actividad, pero también mantiene las propiedades de una clase, por lo que puede tener, los constructores, los métodos, los miembros.
- Hacer una clase parcelable que contiene la lista de objetos personalizados
- ListView getView () se llama con demasiada frecuencia