我是初学Android开发者,我想帮助我!
我想当我点击页面图标和Intent开始显示我保存在Offer表中的数据
我在android studio中编写这段代码:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_froyo);
//setHeader(getString(R.string.FroyoActivityTitle), true, true);
String[] myOffers=new String[20];
int counter=0;
SQLiteDatabase myDB=openOrCreateDatabase("MYOFFER",MODE_PRIVATE,null);
Cursor c=myDB.rawQuery("SELECT * FROM offer", null);
StringBuffer buffer=new StringBuffer();
String myCID = null;
while(c.moveToNext())
{
//myCID=c.getString(0);
myOffers[counter]=c.getString(0);
Log.d("my Offer=",c.getString(0));
Log.d("And Counter=", String.valueOf(counter));
counter++;
}
//String[] countryArray = {"India", "Pakistan", "USA", "UK"};
ListView listview=(ListView) findViewById(R.id.myOfferList);
ArrayAdapter adapter = new ArrayAdapter<String>(this,
R.layout.offershow, myOffers);
listview.setAdapter(adapter);
}
当运行项目时出现此错误:
01-31 08:34:38.972 1080-1080/com.technotalkative.viewstubdemo E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.NullPointerException
at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:394)
at android.widget.ArrayAdapter.getView(ArrayAdapter.java:362)
at android.widget.AbsListView.obtainView(AbsListView.java:2271)
at android.widget.ListView.makeAndAddView(ListView.java:1769)
at android.widget.ListView.fillDown(ListView.java:672)
at android.widget.ListView.fillFromTop(ListView.java:733)
at android.widget.ListView.layoutChildren(ListView.java:1622)
at android.widget.AbsListView.onLayout(AbsListView.java:2106)
at android.view.View.layout(View.java:13754)
at android.view.ViewGroup.layout(ViewGroup.java:4364)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1649)
当我更换这一行时:
String[] countryArray = {"India", "Pakistan", "USA", "UK"};
ListView listview=(ListView) findViewById(R.id.myOfferList);
ArrayAdapter adapter = new ArrayAdapter<String>(this,
R.layout.offershow, countryArray);
listview.setAdapter(adapter);
我的项目终于工作了!但是会发生什么?
答案 0 :(得分:0)
下面:
String[] myOffers=new String[20];
可能myOffers
某些项目为null
,因此适配器显示NullPointerException
。使用c.getCount()
定义数组大小:
Cursor c=myDB.rawQuery("SELECT * FROM offer", null);
String[] myOffers=new String[c.getCount()];