ОЧЕНЬ Основные вкладки actionbarsherlock с фрагментами: FragmentTransaction имеет значение null в методе onTabSelected ()

Я реализую некоторый код из примера (http://arvid-g.de/12/android-4-actionbar-with-tabs-example) и пытаюсь преобразовать его для работы с ActionBarSherlock.

Вот TabActivity.java:

package com.pnet; import com.actionbarsherlock.app.ActionBar; import com.actionbarsherlock.app.ActionBar.Tab; import com.actionbarsherlock.app.SherlockActivity; import android.content.Context; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentTransaction; import android.util.Log; import android.widget.Toast; public class TabActivity extends SherlockActivity { private static String TAG = "TabActivity"; public static Context appContext; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.tab_activity); //ActionBar gets initiated ActionBar actionbar = getSupportActionBar(); //Tell the ActionBar we want to use Tabs. actionbar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); //initiating both tabs and set text to it. ActionBar.Tab PlayerTab = actionbar.newTab().setText("Fragment A"); ActionBar.Tab StationsTab = actionbar.newTab().setText("Fragment B"); //create the two fragments we want to use for display content Fragment PlayerFragment = new AFragment(); Fragment StationsFragment = new BFragment(); //set the Tab listener. Now we can listen for clicks. PlayerTab.setTabListener(new MyTabsListener(PlayerFragment)); StationsTab.setTabListener(new MyTabsListener(StationsFragment)); //add the two tabs to the actionbar actionbar.addTab(PlayerTab); actionbar.addTab(StationsTab); } class MyTabsListener implements ActionBar.TabListener { public Fragment fragment; public MyTabsListener(Fragment fragment) { this.fragment = fragment; } @Override public void onTabSelected(Tab tab, FragmentTransaction ft) { // TODO Auto-generated method stub if (fragment == null) { Log.v(TAG, "fragment is null"); } if (ft == null) { Log.v(TAG, "fragment TRANSACTION is null"); } ft.replace(R.id.fragment_container, fragment); } @Override public void onTabUnselected(Tab tab, FragmentTransaction ft) { // TODO Auto-generated method stub } @Override public void onTabReselected(Tab tab, FragmentTransaction ft) { // TODO Auto-generated method stub Toast.makeText(TabActivity.appContext, "Reselected!", Toast.LENGTH_LONG).show(); } } } 

Вот AFragment.java

 package com.pnet; import com.actionbarsherlock.app.SherlockFragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; public class AFragment extends SherlockFragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment return inflater.inflate(R.layout.afragment, container, false); } } 

Вот BFragment.java

 package com.pnet; import com.actionbarsherlock.app.SherlockFragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; public class BFragment extends SherlockFragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment return inflater.inflate(R.layout.bfragment, container, false); } } 

Здесь tab_activity.xml:

 <LinearLayout android:layout_gravity="center" android:layout_height="fill_parent" android:layout_width="fill_parent" android:orientation="vertical" xmlns:android="http://schemas.android.com/apk/res/android"> <LinearLayout android:id="@+id/fragment_container" android:layout_height="match_parent" android:layout_width="match_parent"> </LinearLayout> </LinearLayout> 

Вот afragment.xml:

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/text" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center_vertical|center_horizontal" android:textAppearance="?android:attr/textAppearanceMedium" android:text="@string/hello_world"/> </LinearLayout> 

Вот bfragment.xml

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/text" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center_vertical|center_horizontal" android:textAppearance="?android:attr/textAppearanceMedium" android:text="@string/tab_navigation_content"/> </LinearLayout> 

Когда активность загружается, он вызывает метод onTabSelected() . Я положил пару, если утверждения, проверяющие объекты для null, которые записываются в журнал, и это показывает, что объект FragmentTransaction имеет значение NULL. Кто-нибудь видит, где я ошибаюсь? Благодарю.

Solutions Collecting From Web of "ОЧЕНЬ Основные вкладки actionbarsherlock с фрагментами: FragmentTransaction имеет значение null в методе onTabSelected ()"

Вы должны сделать свою деятельность расширенной от SherlockFragmentActivity вместо SherlockActivity так же, как вы бы использовали FragmentActivity вместо Activity с пакетом поддержки-v4

Пожалуйста, посмотрите пример фрагмента: https://github.com/JakeWharton/ActionBarSherlock/tree/master/actionbarsherlock-samples/fragments