Java Android-searchview中出现空指针异常
我在片段内部使用了一个searchview,得到了一个nullpointerexception 我不明白为什么,我只是想问一下 我使用了一个3个标签片段,启动时应用程序崩溃 MainActivity.javaJava Android-searchview中出现空指针异常,java,android,eclipse,android-fragments,searchview,Java,Android,Eclipse,Android Fragments,Searchview,我在片段内部使用了一个searchview,得到了一个nullpointerexception 我不明白为什么,我只是想问一下 我使用了一个3个标签片段,启动时应用程序崩溃 MainActivity.java public class MainActivity extends FragmentActivity implements ActionBar.TabListener { private ViewPager viewPager; private Tabs
public class MainActivity extends FragmentActivity implements
ActionBar.TabListener {
private ViewPager viewPager;
private TabsPagerAdapter mAdapter;
private ActionBar actionBar;
// Tab titles
private String[] tabs = { "Search", "Top", "Download", "Library" };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Initilization
viewPager = (ViewPager) findViewById(R.id.pager);
actionBar = getActionBar();
mAdapter = new TabsPagerAdapter(getSupportFragmentManager());
viewPager.setAdapter(mAdapter);
actionBar.setHomeButtonEnabled(false);
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
// Adding Tabs
for (String tab_name : tabs) {
actionBar.addTab(actionBar.newTab().setText(tab_name)
.setTabListener(this));
}
/**
* on swiping the viewpager make respective tab selected
* */
viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageSelected(int position) {
// on changing the page
// make respected tab selected
actionBar.setSelectedNavigationItem(position);
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
@Override
public void onPageScrollStateChanged(int arg0) {
}
});
}
@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
}
@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
// on tab selected
// show respected fragment view
viewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
}
}
SearchFragment.java
public class SearchFragment extends Fragment {
private SearchView searchView1;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_search, container, false);
searchView1 = (SearchView) getActivity().findViewById(R.id.searchView1);
final SearchView.OnQueryTextListener queryTextListener = new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextChange(String newText) {
// Do something
return true;
}
@Override
public boolean onQueryTextSubmit(String query) {
// Do something
performSearch();
return true;
}
};
searchView1.setOnQueryTextListener(queryTextListener);
return rootView;
}
public void performSearch(){
Toast.makeText(getActivity(), "search performer", Toast.LENGTH_SHORT).show();
}
}
fragment_search.xml
你能告诉我我做错了什么,我怎样才能成功吗?你应该在片段视图中查找搜索视图,而不是在活动视图中 改变
searchView1 = (SearchView) getActivity().findViewById(R.id.searchView1);
到
请在你的logcat中发布带有错误的logcat,它应该告诉你是哪一行导致了错误,然后告诉我们是哪一行。你知道如果你把它作为一个菜单项,为什么它会在一个片段中显示为空错误吗这是一个问题的链接
searchView1 = (SearchView) rootView.findViewById(R.id.searchView1);