如何解决在Android列表视图中的单击侦听器上设置的null指针异常
|| 我的应用程序中有一个带有图像按钮的列表视图,我为每个图像按钮编写动作。 但是当触摸图像按钮时,我得到了空指针异常。我不知道原因。请帮我。 我的代码:public class InventoryListActivity extends ListActivity {
private InventoryAdapter adapter;
private InventoryObserver inventoryObserver;
ListView listview;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.inventory_list);
if(!IAPManager.isBillingSupported())
showDialog(1);
listview = (ListView)findViewById(R.id.listExample);
adapter = new InventoryAdapter(this); // here i call InventoryAdapter class for list view the items.
setListAdapter(adapter);
inventoryObserver = new InventoryObserver();
IAPManager.shared().getInventory().addObserver(inventoryObserver);
listview.setOnItemClickListener(new OnItemClickListener(){
public void onItemClick(AdapterView<?> adapterView,View view,int position,long id) {
switch(view.getId()){
case R.id.imageButton1:
Log.e(\"Buy\",\"buy position\"+position);
break;
case R.id.imageButton2:
Log.e(\"play\",\"play position\"+position);
break;
case R.id.imageButton3:
Log.e(\"detail\",\"detail position\"+position);
break;
}
}
});
}
@Override
public void onListItemClick(ListView l,View v,int pos,long id) {
Log.e(\"position\",\"\"+pos);
}
}
在InventoryAdapter类中:
public class InventoryAdapter extends BaseAdapter implements Observer{
public InventoryAdapter(Context ctx) {
context = ctx;
inventory = IAPManager.shared().getInventory();
inventory.addObserver(this);
inventory.load();
}
.......
@Override
public int getCount() {
return inventory.size(Inventory.FilterType.ALL);
}
@Override
public Object getItem(int position) {
return inventory.getProducts(Inventory.FilterType.ALL).get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position,View convertView,ViewGroup parent) {
Product product = (Product) getItem(position);
View view;
if(convertView == null) {
LayoutInflater inflater = (LayoutInflater)
context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.inventory_list_item,null);
}
else {
view = convertView;
}
..........
return view;
}
}
在inventory_list.xml中:
<ListView android:id=\"@+id/listExample\"
android:layout_width=\"fill_parent\"
android:layout_height=\"wrap_content\"/>
在Inventry_list_item.xml中:
......
<ImageButton android:background=\"@drawable/play_btn\" android:focusable=\"false\" android:onClick=\"onItemClick\"
android:layout_width=\"wrap_content\" android:layout_height=\"wrap_content\"
android:id=\"@+id/imageButton2\" android:layout_weight=\"0.5\" />
......
日志猫:
ERROR/AndroidRuntime(2038): Caused by: java.lang.NullPointerException
ERROR/AndroidRuntime(2038): at com.google.iap.BillingService.handleCommand(Unknown Source)
ERROR/AndroidRuntime(2038): at com.google.iap.BillingService.onStart(Unknown Source)
ERROR/AndroidRuntime(2038): at android.app.Service.onStartCommand(Service.java:306)
ERROR/AndroidRuntime(2038): at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2873)
解决方法
您已将不同的xml放入InventoryListActivity类中,而不是将Inventry_list_item.xml放入我的类中,那么您需要在此类中使用该视图组件之后,才能在您的类中使用这些视图。
, 可能发生的情况是系统找不到您指向的视图。
确保仅在onActivityStarted重写中调用R.id.foobar。这样可以确保您不会收到此错误。
希望这会有所帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。