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.

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.

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.

  • No se puede utilizar las pestañas con Sherlock
  • Lengüetas de material con estilo de Android 5.0
  • Cambiar el índice de la pestaña de fragmentos con pestañas mediante programación
  • Fragmento de actualización de Android ViewPager
  • Fragmentos dentro de las pestañas del fragmento
  • Acceso mediante programación a una vista que se define en XML de un fragmento en Android
  • Comunicarse entre diferentes instancias del mismo fragmento
  • Implementación de MVP con Dagger en un FragmentPagerAdapter
  • ¿Por qué aparece el teclado después de TabBar?
  • Tabhost- establece la posición de la divisa en pestañas Android
  • Indicador de pestaña personalizada (con la flecha hacia abajo como indicador)
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.