无法管理与Sherlock一起使用标签
-
11-12-2019 - |
题
好的,所以我试图使用Sherlock显示多个选项卡,每个选项卡用于一个片段。我只有4节课 :一个用于我的主要活动,两个用于我的片段,一个用于TabListener。一切都应该没问题(我有完全相同的程序没有Sherlcock,在4.0设备上工作),所以我不明白为什么我得到NullPointerException。
这是错误的一部分
05-18 17:46:57.197: E/AndroidRuntime(9312): FATAL EXCEPTION: main
05-18 17:46:57.197: E/AndroidRuntime(9312): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.micky.testing/com.micky.testing.SherlockTestActivity}: java.lang.NullPointerException
...
05-18 17:46:57.197: E/AndroidRuntime(9312): Caused by: java.lang.NullPointerException
05-18 17:46:57.197: E/AndroidRuntime(9312): at com.micky.testing.MyTabListener.onTabSelected(MyTabListener.java:21)
...
05-18 17:46:57.197: E/AndroidRuntime(9312): at com.micky.testing.SherlockTestActivity.onCreate(SherlockTestActivity.java:39)
这是我的一个片段 :
家庭碎裂
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.actionbarsherlock.app.SherlockFragment;
public class HomeFragment extends SherlockFragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.homefragment, container, false);
}
}
这是我的小桌手 :
[医]米氏菌
public class MyTabListener implements TabListener {
public SherlockFragment fragment;
MyTabListener(SherlockFragment fr) {
Log.d("MYTAG", "Creating a fragmentListener w/ " + fr);
this.fragment = fr;
}
@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
// TODO Auto-generated method stub
Log.d("TAG", "" + fragment);
ft.replace(R.id.fragment_container, fragment);
}
}
和我的主要活动 :
Sherlocktest活动
public class SherlockTestActivity extends SherlockActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//We take the support actionbar
ActionBar ab = getSupportActionBar();
//We set to navigationmode with tabs
ab.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
//we create the tabs
ActionBar.Tab homeTab = ab.newTab().setText("Home");
ActionBar.Tab tagsTab = ab.newTab().setText("Tags");
//We create the fragments
SherlockFragment homeFragment = new HomeFragment();
SherlockFragment tagsFragment = new TagFragments();
//And we set the tabsListener;
homeTab.setTabListener(new MyTabListener(homeFragment));
tagsTab.setTabListener(new MyTabListener(tagsFragment));
Log.d("","" + homeTab);
ab.addTab(homeTab);
ab.addTab(tagsTab);
}
好的,所以当我将选项卡添加到我的actionbar时,错误似乎被抛出。当我没有将TabListener添加到选项卡时,没有错误。守则 ft.replace(R.id.fragment_container, fragment);
(MyTabListener)似乎是问题所在,但我无法设法理解为什么。fragment不是null(在实例化新的tabListener时初始化),并且没有理由fragment_container是错误的。
所以如果有人能在这里帮助我!谢谢!
解决方案
你应该扩展SherlockFragmentActivity而不是SherlockActivity。在管理片段时使用片段活动。
不隶属于 StackOverflow