android中的简单标签活动

时间:2013-12-30 06:24:38

标签: java android android-tabhost android-tabactivity

我想做什么 ::

enter image description here

BreakfastLunchDinnerIndividualListOfItems.java

public class BreakfastLunchDinnerIndividualListOfItems extends TabActivity implements OnTabChangeListener{
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.breakfast_lunch_dinner_individual_list_of_items);

        Resources res = getResources(); // Resource object to get Drawables
        TabHost tabHost = getTabHost(); // The activity TabHost
        TabHost.TabSpec spec; // Reusable TabSpec for each tab
        Intent intent; // Reusable Intent for each tab

        String REST = getTabHost().toString();

        // Create an Intent to launch an Activity for the tab (to be reused)
        intent = new Intent().setClass(this, BLD_IndividualListOfItems_Starters.class);
        //intent.putExtra("Starters", REST);
        spec = tabHost.newTabSpec("Starters").setIndicator("Starters").setContent(intent);
        tabHost.addTab(spec);

        // Do the same for the other tabs

        intent = new Intent().setClass(this, BLD_IndividualListOfItems_MainCourse.class);
        //intent.putExtra("MainCourse", REST);
        spec = tabHost.newTabSpec("MAIN_COURSE").setIndicator("Main Course").setContent(intent);
        tabHost.addTab(spec);
    }

    public void onTabChanged(String arg0)
    {
        // TODO Auto-generated method stub
        //Toast.makeText(getApplicationContext(),arg0, Toast.LENGTH_LONG).show();
    }
}

  • 我试过String REST = getTabHost().toString();问题就是这样 点击标签我无法发送特定tabtext 选项卡启动的活动
  • 我知道标签活动已被删除,我只是在学习
  • 如何解决这个问题,希望我很清楚

1 个答案:

答案 0 :(得分:2)

spec = tabHost.newTabSpec("Starters").setIndicator("Starters").setContent(intent);
spec = tabHost.newTabSpec("MAIN_COURSE").setIndicator("Main Course").setContent(intent);

此处StartersMain Course是标签的标题。将这些字符串发送到有界活动的最简单方法是将它们发送到有意义的意图 tabSpecs。

    String TAB_TITLE="Starters";
    Intent intent = new Intent().setClass(this, BLD_IndividualListOfItems_Starters.class);

    Bundle bundle =new Bundle();
    bundle.putString("key_title", TAB_TITLE);
    intent.putExtras(bundle);

    spec = tabHost.newTabSpec("Starters").setIndicator(TAB_TITLE).setContent(intent);
    tabHost.addTab(spec);

以下是您在BLD_IndividualListOfItems_Starters活动中获取此字符串的方法:

protected void onCreate(Bundle savedInstanceState) {
     ...
     String title=getIntent().getExtras().getString("key_title");
}

但正如Raghunandan所说,最好使用片段而不是被剥夺TabActivity

编辑:

如果你想以文字形式向相应的活动发送文字,我的意思是在标签改变之后 - 你可以:

  1. 使用您的字符串创建和广播自定义意图。 (CUSTOM_INTENT_EXAMPLE)
  2. BLD_IndividualListOfItems_Starters活动注册BroadcastReciever中,它会抓住您的自定义意图并从中获取文字。 (BROADCAST_RECIEVER_FROM_ACTIVITY_EXAMPLE)
  3. 您无法直接访问BLD_IndividualListOfItems_Starters中的标签文字,因为TabActivityBLD_IndividualListOfItems_Starters是两种不同的活动。 但是你可以通过包,静态字段,单例等在活动之间发送数据。这里是docs的链接 http://developer.android.com/guide/faq/framework.html#3