【问题标题】:Android pass value to tabAndroid将值传递给选项卡
【发布时间】:2014-01-02 06:57:42
【问题描述】:

在我的 Android 应用程序中,我想将值传递给选项卡...我有一个 mainActivity,然后是 maintabactivity 和三个选项卡活动,例如 tab1 tab2 和 tab3.. 我需要将三个不同的值传递给 tab1 , tab2 , tab3 ..我能够传递值...但是当我传递值时,结果不会显示在内部选项卡中,而是显示为单独的页面..我在下面给出我的代码..请帮助..

主活动

    //Intent for tab operations

        //Personal Year tab operation
        Intent itab = new Intent(this, TabPersonalYr.class);
        //Personal Year Number
        itab.putExtra("name18",sum18 + "");
        startActivity(itab);

        //Personal Month tab operation
        Intent imonthtab = new Intent(this, TabPersonalMnth.class);
        //Personal Month Number
        imonthtab.putExtra("name19",sum19 + "");
        startActivity(imonthtab);

        //Personal Month tab operation
        Intent idaytab = new Intent(this, TabPersonalDay.class);
        //Personal Day Number
        idaytab.putExtra("name20",sum20 + "");
        startActivity(idaytab);*/

MainTabLayout 活动

  @Override
        public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.tablay_xm);

        TabHost tabHost = getTabHost();


        // Tab for PersonalYear
        TabSpec photospec = tabHost.newTabSpec("Personal Year");
        // setting Title and Icon for the Tab
        photospec.setIndicator("Personal Year", getResources().getDrawable(R.drawable.icon_photos_tab));
        Intent photosIntent = new Intent(this, TabPersonalYr.class);
       photospec.setContent(photosIntent);


        // Tab for Personal Month
        TabSpec songspec = tabHost.newTabSpec("Personal Month");        
        songspec.setIndicator("Personal Month", getResources().getDrawable(R.drawable.icon_songs_tab));
        Intent songsIntent = new Intent(this, TabPersonalMnth.class);
        songspec.setContent(songsIntent);

        // Tab for PersonalDay
        TabSpec videospec = tabHost.newTabSpec("Personal Day");
        videospec.setIndicator("Personal Day", getResources().getDrawable(R.drawable.icon_videos_tab));
        Intent videosIntent = new Intent(this, TabPersonalDay.class);
        videospec.setContent(videosIntent);

        // Adding all TabSpec to TabHost
        tabHost.addTab(photospec); // Adding photos tab
        tabHost.addTab(songspec); // Adding songs tab
        tabHost.addTab(videospec); // Adding videos tab

tab1活动

TextView txt2 = (TextView) findViewById (R.id.textView14);
        txt2.setText(getIntent().getStringExtra("name18"));

【问题讨论】:

  • 根据标签的开发人员指南,您没有使用 Fragments 有什么特别的原因吗?
  • 没有特别的原因..我不知道如何使用它..
  • 您应该使用 Fragments,这是多年来的标准做法。无论如何,更具体地解决您的问题。究竟是什么没有按预期工作?
  • 实际上.. 正如我在问题中提到的.. 我有一个 MainActivity 和三个选项卡.. 和一个 Tab mainActivity... 我需要将三个值传递给三个选项卡...当用户按下在每个选项卡上,结果必须显示在选项卡内的文本视图中......使用上面的代码,我可以将值传递给选项卡......但它不像选项卡那样显示......它像单独的页面一样显示。 ..我想我需要将值传递给主选项卡页面,然后传递给选项卡..但我没有代码..
  • “不像标签一样显示”是什么意思?我不知道那是什么意思。您能否提供您的问题的屏幕截图或说明?

标签: android tabs android-tabhost


【解决方案1】:

您可以使用创建单例类来传递值

public class ShareData{
    private volatile static ShareData shareData;
    public static ShareData data(){
    if(shareData == null){
        synchronized (ShareData.class) {
            if (shareData == null) {
                shareData = new ShareData();
            }
        }
    }
    return shareData;
    }  

    public String value;  
}

在 Tab2 中设置值

ShareData.data().value = "set in tab2";

在 Tab1 中获取值

txt2.setText(ShareData.data().value);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多