当前位置: 首页 > 知识库问答 >
问题:

片段内旋转器基适配器上的NullPointerException错误

司寇嘉茂
2023-03-14

请帮助我得到NullPointerException错误。我是新的碎片,我尝试了没有碎片,它是工作的,我不明白为什么它不工作,当我实现它在碎片上,我已经检查了数据库,数据库没有问题,谢谢。

E/AndroidRuntime: FATAL EXCEPTION: main
Process: id.co.bumisentosa.yantek, PID: 26979
java.lang.NullPointerException
at id.co.bumisentosa.yantek.fragment_JTM.Inspection_JTM_Fragment_Awal_Tab.onCreateView(Inspection_JTM_Fragment_Awal_Tab.java:95)
public class Inspection_JTM_Fragment_Awal_Tab extends Fragment implements
    OnItemSelectedListener, View.OnClickListener {


// Spinner element
Spinner spinner_unit;

private Context context;
private DatabaseHandler databaseHandler;

static int categoryID;
private List<ItemsDetails> categoryList;
private CategorySpinnerAdapter adapter;



public Inspection_JTM_Fragment_Awal_Tab() {
    // Required empty public constructor
}

public static int getCategory() {
    return categoryID;
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    context = getActivity();
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View view = inflater.inflate(R.layout.inspection_jtm_fragment_tab_awal, container, false);

    // Spinner element
    spinner_unit = (Spinner) view.findViewById(R.id.spinner_unit_inspeksi_jtm);



    categoryList = databaseHandler.getCategories();

    adapter = new CategorySpinnerAdapter(getActivity(), categoryList);
    spinner_unit.setAdapter(adapter);
    spinner_unit.setOnItemSelectedListener(this);



    return view;
}
public class CategorySpinnerAdapter extends BaseAdapter {

private List<ItemsDetails> list;
private LayoutInflater inflater;
public CategorySpinnerAdapter(Activity activity, List<ItemsDetails> list) {
    this.list = list;
    this.inflater = LayoutInflater.from(activity);
}

@Override
public int getCount() {
    // TODO Auto-generated method stub
    return list.size();
}

@Override
public Object getItem(int arg0) {
    // TODO Auto-generated method stub
    return null;
}

@Override
public long getItemId(int arg0) {
    // TODO Auto-generated method stub
    return 0;
}

@Override
public View getView(int position, View view, ViewGroup root) {
    if(view == null){
        view = inflater.inflate(R.layout.spinner_item, root, false);
    }
    TextView categoryName = (TextView) view.findViewById(R.id.text_category_name);
    categoryName.setText(list.get(position).getName());
    return view;
}

}

公共类DatabaseHandler扩展SQLiteOpenHelper{

// Database Version
private static final int DATABASE_VERSION = 1;

// Database Name
private static final String DATABASE_NAME = "test";

// Contacts table name

private static final String TABLE_CATEGORY = "category";




// Contacts Table Columns names
private static final String KEY_ID = "id";
private static final String KEY_NAME = "name";




//
public DatabaseHandler(Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

// Creating Tables
@Override
public void onCreate(SQLiteDatabase db) {


    String CREATE_CATEGORY_TABLES = " CREATE TABLE " + TABLE_CATEGORY
            + "(" + KEY_ID + " INTEGER PRIMARY KEY, " + KEY_NAME + " TEXT " + ")";








    db.execSQL(CREATE_CATEGORY_TABLES);

}

// Upgrading database
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    // Drop older table if existed

    db.execSQL("DROP TABLE IF EXISTS " + TABLE_CATEGORY);

    // Create tables again
    onCreate(db);
}


public List<ItemsDetails> getCategories() {
    List<ItemsDetails> detailsList = new ArrayList<ItemsDetails>();
    String selectQuery = "SELECT  * FROM " + TABLE_CATEGORY;
    SQLiteDatabase db = this.getReadableDatabase();
    Cursor cursor = db.rawQuery(selectQuery, null);
    if (cursor.moveToFirst()) {
        do {
            try {
                ItemsDetails details = new ItemsDetails();
                details.setId(cursor.getInt(0));
                details.setName(cursor.getString(1));

                detailsList.add(details);
            } catch (Exception e) {
                e.printStackTrace();
            }
        } while (cursor.moveToNext());
    }
    cursor.close();
    db.close();
    return detailsList;
}

}

共有1个答案

贡光明
2023-03-14

您在getItem方法中返回null。

@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return null;
}

只是返回

@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return arrayList.get(arg0);
}
 类似资料:
  • 问题内容: 这个想法是我有一个列表视图,其中每个项目都是一个产品,当我单击该项目时,我需要从列表视图的适配器内部的单击中转到另一个片段。 我的适配器是: 您必须假设所有代码都在工作。 如何转到适配器内的产品Fragment? 问题答案: 为了解决这个问题,我要做的是: 在主类中,我将参数作为值,并通过开关在我感兴趣的main中设置了片段。

  • 问题内容: 我有一些碎片。每个片段具有在(=挥动之前不可见的)用。 适配器设置为,这会减慢刷卡速度,因为每次创建时都要载入30个列表项,因为正在创建新的片段。 我的问题是,在空闲时刷卡后是否可以设置适配器?或者,还有更好的方法?扩展SlideDrawer时,该列表需要已经加载。 问题答案: 我的问题是,是否可以在Pager闲置时刷卡后设置适配器? 还有就是,你可以在设置监控的滑动手势。然后,您可以

  • 给我的 我已经尝试了我找到的所有解决方案(设置一个空适配器,将代码移动到哪里,使用单独的线程),但无济于事。这应该适用于正常的活动,所以我想也许我做错了什么。

  • 我的片段中的回收视图给我这个错误,但我无法弄清楚。关于这个问题有很多问题,但到目前为止,它们都没有解决我的问题。 这是我的片段中的一段代码:

  • 我正在我的应用程序中集成可搜索的旋转器。下面是我的代码 Xml文件 Man.java 当我运行上面的代码时,我得到的输出如下图所示。自定义arraylist数据不显示它是打印java每个项目旋转器输出的垃圾值

  • 我正在尝试将一个旋转器的值传递到一个不同的片段中,这样它就可以在一个不同的片段中使用,从而将它转换成一个不同的单元。我这里有密码。我有一个onitemselected方法,它接受旋转器的值,并将其显示在应用程序的底部。 如有任何帮助,我们将不胜感激。 公共视图onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedI