私はAndroidを初めて使用し、小さなプロジェクトを実装しています。このプロジェクトでは、1つのDrupalWebサイトからのニュースがあります。このアプリには3つのタブがあり、すべてのタブには特定のコンテンツを含む記事のリストがあります。記事のリストは、linearlayoutに配置されたtextviewsとimageviewsによって作成されます。タイトルをクリックすると、記事が開いて詳細が表示されます。これらの記事は、Drupalサイトからモジュールを介してロードされHTTP POST
ますViewJSON
。タブはとで作成されFragmentActivity
ますTabHost
。ここまではすべて問題なく動作します。
私の問題は、タブの上に配置する1つの更新ボタンを作成したいのですが、それを押すと、記事のリストを更新または再読み込みして、現在のタブを開いたままにする必要があります。タブフラグメントのコンテンツを置き換えて再度開くようにしましたが、1つの記事のタイトルをクリックして開くと、タブコンテンツはすべてのフラグメントの下にスタックされたままになります。記事のタイトルをクリックすると、1つの新しいフラグメントが開いていることをお伝えします。引数として記事のIDを送信し、同じフラグメントで記事のコンテンツを開きます。
私はこのコードを試していましたが、成功しませんでした。
Button btn_refresh = (Button) findViewById(R.id.btn_refresh);
btn_refresh.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
String current_tab = mTabHost.getCurrentTabTag();
if(current_tab.contains("POPULARE")){
Fragment f;
f = new PopulareActivity();
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.tot,f);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.commit();
}
if(current_tab.contains("RECOMANDATE")){
Fragment f;
f = new RecomandateActivity();
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.tot,f);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.commit();
}
}
});
より正確には、アプリに入力し、Tab2を押し(tab2の記事のリストを表示)、更新ボタンを押して1つの記事を開き、モバイルデバイスの戻るボタンを押して、tab2のコンテンツを表示します。次に、tab1に入り(そしてtab1の記事のリストを表示し)、tab1のリストから1つの記事を開き、必要なものを表示して、モバイルから戻るボタンを押します。この瞬間に、tab2のコンテンツが表示されます(更新ボタンを押した場所からのtab2からの記事のリスト)。
私が使用する記事の詳細を開くには:
tv.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Fragment f;
f = new DetaliiActivity();
Bundle data = new Bundle();
data.putInt("id", nid);
f.setArguments(data);
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.tot,f);
ft.addToBackStack(null);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
ft.commit();
}
});
助けてくれてありがとう!