2015-04-23 2 views
0

Я пытаюсь передать данные между двумя действиями TabHost, но не преуспел. Вот мой код:Как передать данные между действиями TabHost в android

public class AndroidTabLayoutActivity extends TabActivity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     TabHost tabHost = getTabHost(); 

     TabSpec livedata = tabHost.newTabSpec("Photoes"); 
     livedata.setIndicator("Photoes", getResources().getDrawable(R.drawable.icon_photos_tab)); 
     Intent livedataIntent = new Intent(this, PhotosActivity.class); 
     livedata.setContent(livedataIntent); 

     TabSpec addedlegs = tabHost.newTabSpec("Songs"); 
     addedlegs.setIndicator("Songs", getResources().getDrawable(R.drawable.icon_songs_tab)); 
     Intent addedlegsIntent = new Intent(this, SongsActivity.class); 
     addedlegs.setContent(addedlegsIntent); 

     tabHost.addTab(livedata); 
     tabHost.addTab(addedlegs);   
    } 
} 

main.xml

<?xml version="1.0" encoding="utf-8"?> 
<TabHost xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@android:id/tabhost" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent"> 
     <TabWidget 
      android:id="@android:id/tabs" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" /> 
     <FrameLayout 
      android:id="@android:id/tabcontent" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent"/> 
    </LinearLayout> 
</TabHost> 

вывода изображения: enter image description here Я выполняю некоторые вычисления в PhotosActivity.class (который находится в первой вкладке (Photoes)) активность и Я хотел бы передать результат как строку в SongsActivity.class (который во второй вкладке (Песни)), где я использую эту строку для дальнейших вычислений.

Может ли кто-нибудь предложить способ архивировать это? Thanx inadvance !!

ответ

0

Идея связи между родителем activity и его дочерним элементом связана с ассоциированным tags, который в вашем случае - «Фото» и «Песни».

Например: Если вам нужно передать строку из Tab «Фото» в родительскую активность.

1) вам нужно создать публичный метод в родительском activity затем вызвать его следующим образом от ребенка

((AndroidTabLayoutActivity)getParent()).myFunctionName("string value"); 

2) Для того, чтобы передать это значение для конкретного ребенка, например. «Песни», тогда вам нужно создать публичный метод в этом дочернем activity и вызвать его из родителя, используя его Tag.

public void myFunctionName(String str){ 
    ActivityTab1 activity = (ActivityTab1) getLocalActivityManager().getActivity("Tab1"); 
    activity.takeThisValue(str); 
} 

Вам также может понадобиться, чтобы сделать некоторые проверки, чтобы убедиться, что экземпляры активности не null

if(activity !=null) 
//DO my stuff 

Ссылка: https://androidactivity.wordpress.com/2012/08/17/two-way-communication-between-tabactivity-and-its-child-tabs/