Android 从数据库在微调器中显示数据时FragmentActivity中出现Nullpointer异常
FrameActivity中使用FragmentPagerAdapter声明我的可滑动选项卡时出现问题。在其中一个选项卡中包含我要从数据库中收集数据的微调器。首先,我要发布我的FrameActivityAndroid 从数据库在微调器中显示数据时FragmentActivity中出现Nullpointer异常,android,nullpointerexception,spinner,fragment,Android,Nullpointerexception,Spinner,Fragment,FrameActivity中使用FragmentPagerAdapter声明我的可滑动选项卡时出现问题。在其中一个选项卡中包含我要从数据库中收集数据的微调器。首先,我要发布我的FrameActivity public class TranscationMain extends FragmentActivity implements ActionBar.TabListener { Context context; private ViewPager viewPager; Spinne
public class TranscationMain extends FragmentActivity implements
ActionBar.TabListener {
Context context;
private ViewPager viewPager;
Spinner spinner_question ;
ContentValues values;
SQLiteDatabase sql_lite_db_obj;
private TabsPagerAdapter mAdapter;
private ActionBar actionBar;
Cursor cursor;
int i =0;
// Tab titles
private String[] tabs = { "Shipped In", "shipped Out", "New Entry" };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.transcation_main);
AndroidContext.setContext(this);
sql_lite_db_obj = DatabaseHelper.getInstance().getDb();
values = new ContentValues();
// Initilization
context = this;
viewPager = (ViewPager) findViewById(R.id.pager);
actionBar = getActionBar();
mAdapter = new TabsPagerAdapter(getSupportFragmentManager());
viewPager.setAdapter(mAdapter);
actionBar.setHomeButtonEnabled(false);
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
spinner_question = (Spinner)findViewById(R.id.spinner_category);
// Adding Tabs
for (String tab_name : tabs) {
actionBar.addTab(actionBar.newTab().setText(tab_name).setTabListener(this));
}
viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageSelected(int position) {
actionBar.setSelectedNavigationItem(position);
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
@Override
public void onPageScrollStateChanged(int arg0) {
}
});
}
@Override
public void onTabReselected(Tab arg0, FragmentTransaction arg1) {
// TODO Auto-generated method stub
}
@Override
public void onTabSelected(Tab arg0, FragmentTransaction arg1) {
// TODO Auto-generated method stub
viewPager.setCurrentItem(arg0.getPosition());
}
@Override
public void onTabUnselected(Tab arg0, FragmentTransaction arg1) {
// TODO Auto-generated method stub
}
public void clickHandler(View v)
{
if (v.getId() == R.id.btn_new_category_id) {
// btn click event that define in NewEntry.java calss
// click on this button alert dialog will open with editext
// from where i insert data in database. which i have to show in
// spinner which define in same activity. Insertion of data is
// done successfully.
}
}
private void insertData(String category) {
// method to insert data in database
// working fine
}
现在,这是上述代码的异常部分
private void loadSpinnerData() {
DatabaseHelper db = new DatabaseHelper(getApplicationContext());
List<String> lables = db.getAllLabels();
System.out.println(" data in array : "+lables);
// Creating adapter for spinner
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, lables);
System.out.println(" dapater : "+dataAdapter);
// Drop down layout style - list view with radio button
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// attaching data adapter to spinner
spinner_question.setAdapter(dataAdapter);
}
但我总是得到一个空指针异常。只是因为
spinner_question = (Spinner)findViewById(R.id.spinner_category);
微调器不是在上面TransactionMain的布局中定义的,而是在下面的片段中定义的
public class NewEntry extends Fragment{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
spnr = new Spinner(getActivity());
View rootView = inflater.inflate(R.layout.new_entry, container, false);
return rootView;
}
}
这就是为什么我在下线中遇到了异常
spinner_question.setAdapter(dataAdapter);
现在我不明白如何解决这个问题。如何在片段中绑定微调器中的数据。我是一个新的fro碎片活动。提前感谢大家
Spinner is not define in above TranscationMain's layout, It define in below Fragment
这就是坠机的原因
findViewById
在当前展开的布局中查找视图
如果微调器位于片段中,则需要在片段中初始化相同的微调器,然后将项目从数据库加载到片段中的微调器
零碎
Spinner spinner_question;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.new_entry, container, false);
spinner_question = (Spinner)rootView.findViewById(R.id.spinner_category);
return rootView;
}
@拉古南丹。。当我试图在片段中定义微调器时,findViewById不起作用。那么我将如何用java文件绑定xml中的spinner;spnr=新微调器(getActivity());加载SpinnerData();private void loadSpinnerData(){DatabaseHelper db=new DatabaseHelper(getActivity());List lables=db.getAllLabels();ArrayAdapter dataAdapter=new ArrayAdapter(这是android.R.layout.simple_spinner_项,标签);dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_下拉_项);spnr.setAdapter(dataAdapter);}@Raghunanadan。。但是我在ArrayAdapter中得到错误“构造函数ArrayAdapter(NewEntry,int,List)未定义”@BlueGreen您需要阅读文档
ArrayAdapter dataAdapter=新的ArrayAdapter(getActivity(),android.R.layout.simple\u微调器\u项,标签)代码><代码>此
指的是片段而不是活动context@BlueGreen现在发生了什么??
Spinner spinner_question;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.new_entry, container, false);
spinner_question = (Spinner)rootView.findViewById(R.id.spinner_category);
return rootView;
}