如何从Preference Activity动态设置Tab的内容?

时间:2012-09-18 19:24:03

标签: android static tabs android-tabhost preferenceactivity

我是Android开发的noob,我想动态地为特定选项卡设置内容。在onCreate期间,我将内容设置为:

    specs2 = th.newTabSpec("tag2");
    specs2.setContent(R.id.tab2);
    specs2.setIndicator("NEWS",getResources().getDrawable(R.drawable.news));

但是,我没有从PreferenceActivity切换内容的运气。这是我的代码:

 SharedPreferences getPrefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
    String selectednewsfeed = getPrefs.getString("list", "1");
    if(selectednewsfeed.contentEquals("1")){
        try{
            MyActivity.newsfeed.loadUrl("http://feeds.feedburner.com/GoldMoneyGoldResearch");
            MyActivity.specs2.setContent(R.id.tab5);
            }catch (Exception e){
                e.printStackTrace();
            }
    }
}  

我在更改MyActivity中的内容时没有任何问题,只是尝试从PreferenceActivity实现此问题。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

最简单的方法是使用startActivityForResult()。这允许您从已启动的活动中接收已启动活动的信息。

快速举例,启动PreferenceActivity:

// in MainActivity
startActivityForResult(new Intent(this, PrefsActivity.class), 0);

然后在PreferenceActivity中,设置一些数据以返回MainActivity:

// in PreferenceActivity
Intent returnData = new Intent();
returnData.putExtra("com.your.package.name.DATA", R.id.tab5);
setResult(Activity.RESULT_OK, returnData);
finish();

返回MainActivity,覆盖onActivityResult():

@Override
protected void onActivityResult (int requestCode, int resultCode, Intent data){
    switch(requestCode){
    case 0:
        if (resultCode == Activity.RESULT_OK){
            int tabResource = data.getIntExtra("com.you.package.name.DATA", -1);
            specs2.setContent(tabResource);
        }
        break;
    }
}