6
私は、次のとおりである私は

Androidのタブのアクションバー

http://www.youtube.com/watch?v=gMu8XhxUBl8

TabsActivity内のコードを参照してください3.0、用アンドロイドアクションバー上にしようとしています

:用

package com.test.actionbar; 

import android.app.ActionBar; 
import android.app.ActionBar.Tab; 
import android.app.Activity; 
import android.app.Fragment; 
import android.app.FragmentTransaction; 
import android.os.Bundle; 

public class TabsActivity extends Activity{ 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    ActionBar bar = getActionBar(); 
    bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 
    ActionBar.Tab tabA = bar.newTab().setText("A Tab"); 
    ActionBar.Tab tabB = bar.newTab().setText("B Tab"); 
    ActionBar.Tab tabC = bar.newTab().setText("C Tab"); 

    Fragment fragmentA = new AFragmentTab(); 
    Fragment fragmentB = new BFragmentTab(); 
    Fragment fragmentC = new CFragmentTab(); 

    tabA.setTabListener(new MyTabsListener(fragmentA)); 
    tabB.setTabListener(new MyTabsListener(fragmentB)); 
    tabC.setTabListener(new MyTabsListener(fragmentC)); 

    bar.addTab(tabA); 
    bar.addTab(tabB); 
    bar.addTab(tabC); 

} 

protected class MyTabsListener implements ActionBar.TabListener { 

    private Fragment fragment; 

    public MyTabsListener(Fragment fragment) { 
     this.fragment = fragment; 
    } 

    public void onTabReselected(Tab tab, FragmentTransaction ft) { 
     // TODO Auto-generated method stub 

    } 

    public void onTabSelected(Tab tab, FragmentTransaction ft) { 
     // TODO Auto-generated method stub 
     ft.add(R.id.fragment_container, fragment, null); 

    } 

    public void onTabUnselected(Tab tab, FragmentTransaction ft) { 
     // TODO Auto-generated method stub 

    } 
    } 
} 

しかし、チュートリアルを完了した後、私はTabSActivityのonTabSelectedメソッドで、container_idという変数が必要であることを認識しました。 API。私は行を削除しようとし、タブレットでそれを実行したが、それは私にruntimeexceptionをスローします。

誰もがこれを手伝ってくれますか?

申し訳ありませんが、質問があまりにも単純すぎる場合、私はアンドロイドプログラミングに新しいです。

ありがとうございます。

EDIT

import android.app.ActionBar; 
import android.app.Activity; 
import android.app.Fragment; 
import android.os.Bundle; 

public class ActionBarTabs extends Activity { 

public void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    ActionBar bar = getActionBar(); 
    bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 
    ActionBar.Tab tabA = bar.newTab().setText("A Tab"); 
    ActionBar.Tab tabB = bar.newTab().setText("B Tab"); 
    ActionBar.Tab tabC = bar.newTab().setText("C Tab"); 

    bar.addTab(tabA); 
    bar.addTab(tabB); 
    bar.addTab(tabC); 
    } 
} 

UPDATE

package com.debug.actionbartabs; 

import android.app.ActionBar; 
import android.app.Activity; 
import android.os.Bundle; 

public class TabsActivity extends Activity { 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    ActionBar bar = getActionBar(); 
    bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 
    ActionBar.Tab tabA = bar.newTab().setText("A Tab"); 
    bar.addTab(tabA); 

    } 
} 

答えて

12

の各クラスには、次のようになります。

public class AFragmentTab extends Fragment 
{ 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
    { 
    return inflater.inflate(R.layout.fragment_a, container, false); 
    } 
} 

をメインの活動は、次のようになります。

package com.test.actionbar; 

import android.app.ActionBar; 
import android.app.ActionBar.Tab; 
import android.app.Activity; 
import android.app.Fragment; 
import android.app.FragmentTransaction; 
import android.os.Bundle; 

public class TabsActivity extends Activity{ 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    ActionBar bar = getActionBar(); 
    bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 
    ActionBar.Tab tabA = bar.newTab().setText("A Tab"); 
    ActionBar.Tab tabB = bar.newTab().setText("B Tab"); 
    ActionBar.Tab tabC = bar.newTab().setText("C Tab"); 

    Fragment fragmentA = new AFragmentTab(); 
    Fragment fragmentB = new BFragmentTab(); 
    Fragment fragmentC = new CFragmentTab(); 

    tabA.setTabListener(new MyTabsListener(fragmentA)); 
    tabB.setTabListener(new MyTabsListener(fragmentB)); 
    tabC.setTabListener(new MyTabsListener(fragmentC)); 

    bar.addTab(tabA); 
    bar.addTab(tabB); 
    bar.addTab(tabC); 

} 

protected class MyTabsListener implements ActionBar.TabListener { 

    private Fragment fragment; 

    public MyTabsListener(Fragment fragment) { 
     this.fragment = fragment; 
    } 

    public void onTabReselected(Tab tab, FragmentTransaction ft) { 
    } 

    public void onTabSelected(Tab tab, FragmentTransaction ft) { 
     ft.add(R.id.fragment_container, fragment, null); 
    } 

    public void onTabUnselected(Tab tab, FragmentTransaction ft) { 
     // some people needed this line as well to make it work: 
     ft.remove(fragment); 
    } 
} 

私はここで自分のコードのコピーを見つけました:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
> 
<LinearLayout android:layout_height="wrap_content" 
android:layout_width="match_parent" 
android:id="@+id/fragment_container"></LinearLayout> 
</LinearLayout> 
+0

@Jonathonホーお返事に感謝を:main.xmlでそうhttp://www.abelski.com/courses/android3ui/actionbar.pdf> _ < は次のようになります。私はどこかでIDを宣言していますか?なぜなら私はどこでそれをやっているべきか私はあまり確信していないからです。私は開発者のガイドを読んだが、まだコンセプトを理解することはできません。あなたは私がそれを働かせることができるようなものを追加すべき場所に私を導くことができればあなたは気になりますか? –

+0

ああ、ちょっと変わったよ。私はあなたがあなたのフラグメントxmlファイルにidを入れていることを確信しています。フラグメントはここで読むことができます:http://developer.android.com/reference/android/app/Fragment.htmlしかし、それはあなたのID 。自動的に生成されたR.javaに渡され、Javaコードで使用できるようになります。まだXMLビューでアンドロイドフォームを作ってみましたか?それはそれに似ているはずです。 – rawreth

+0

@Jonathan Ho前にxmlレイアウトを使用しようとしましたが、今回は、正しいクラスに変更されたクラスへの参照ができないなどのエラーが発生していますが、すべてを上書きします。 –

関連する問題