0

私はアンドロイド開発に慣れていないので、特定のタブに対して動的にコンテンツを設定したいと考えています。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();
            }
    }
}  

問題である PreferenceActivity からこれを達成しようとしているだけです。どんな助けでも大歓迎です。

4

1 に答える 1

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;
    }
}    
于 2012-09-18T19:38:55.590 に答える