Cómo llamar a un método en otra actividad
Tengo una pregunta sobre la comunicación entre las actividades en el programa de implementación de Android.
Aquí hay dos clases de actividad.
- ¿Cómo cargar la actividad del fragmento el método de creacion () de la barra seleccionada de la barra de acciones solo si la pestaña está seleccionada?
- Cómo abrir pestaña en Espresso
- Fragmento del buscapersonas que se oculta detrás de Tab Bar
- Android 5.0 tablas de diseño de materiales
- ¿Cómo mostrar el contador de notificaciones no leído en Tabs dentro de TabLayout?
public class HelloAndroidActivity extends TabActivity{ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Resources res = getResources(); TabHost tabHost = getTabHost(); TabHost.TabSpec spec; Intent intent; intent = new Intent().setClass(this, Tab1Activity.class); spec = tabHost.newTabSpec("Tab1").setIndicator( "Tab1", res.getDrawable(R.drawable.ic_tab_icon)) .setContent(intent); tabHost.addTab(spec); } }
_
public class Tab1Activity extends ListActivity { private ArrayList<String> list = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); list = new ArrayList<String>(); setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, list)); addColumn("one"); addColumn("two"); addColumn("three"); } public void addColumn(String s){ list.add(new String(s)); } }
HelloAndroidActivity es la actividad principal. Tab1Activity es subactividad y visualiza listview. HelloAndroidActivity incluye la vista Tab1Activity.
Lo que quiero hacer es llamar addColumn método de HelloAndroidActivity, porque HelloAndroidActivity se agrega a la nueva función como TwitterUserStreamAdapter. Si el androide recibe mensajes de Internet, la aplicación envía un mensaje a Tab1Activity.
Sin embargo, no sé cómo implementar la comunicación entre las actividades.
- Cardview dentro de la pestaña
- Cómo obtener la vista de texto de la pestaña TabLayout
- ¿Cómo agregar divider en el estilo de TabLayout de android? TabLayout es nuevo en la biblioteca de soporte de diseño
- Cambiar el color de las pestañas de navegación mediante programación
- Android: Listview se duplica cuando inicie una nueva actividad y presiona atrás para volver a ella
- Android | Detener TabLayout recargar / actualizar mis fragmentos
- Cambiar el relleno de TextView en TabLayout
- Cómo actualizar el contenido de la ficha de fragmento en el botón de clic
Usted puede pasar datos entre las actividades usando la intent
, usted podría ponerlo en los extras con la intención:
HelloAndroidActivity
intent.putExtra("callX", true);
Tab1Activity
Bundle extras = getIntent().getExtras(); if (extras != null) { boolean callX = extras.getBoolean("callX"); if(callX) { X(); } }
EDITAR Si necesita un mecanismo de evento / oyente podría ser más o menos así (no lo ha compilado, pero debería darle una idea):
public inerface MyEventListener { abstract void handleMyEvent(); } public class Tab1Activity implements MyEventListener { public void handleMyEvent() { /*...*/ } protected void onCreate(Bundle savedInstanceState) { /*...*/ HelloAndroidActivity.addListener(this); } protected void onDestroy() { /*...*/ HelloAndroidActivity.removeListener(this); } } public class HelloAndroidActivity { static ArrayList<MyEventListener> listeners = new ArrayList<MyEventListener>(); public static void addListener(MyEventListener listener) { listeners.add(listener); } public static void removeListener(MyEventListener listener) { listeners.remove(m); } public static void onEvent() { for(MyEventListener m : listeners) { m.handleMyEvent(); } } }
Aunque usted puede hacerlo creando el método estático, pero no la manera correcta porque dejará el contexto. Pasar los datos a Tab1Activity que tiene en HelloAndroidActivity throgh intención. Dentro de Tab1Activity getIntent y trabajar en consecuencia.
También puede utilizar onTabChange () para reflejar los cambios entre las pestañas.