制作自定义片段后应用程序中出现错误

2024-03-12

我制作了一个测验应用程序,其中我将问题存储在数据库中,然后以列表的形式从数据库中取出,我正在制作自定义片段以从数组列表上传问题,但每个片段上只得到 1 个问题

这是我的数据库代码

package com.example.android.viewpager4;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

import java.util.ArrayList;
import java.util.List;

public class DbHelper extends SQLiteOpenHelper {
    private static final int DATABASE_VERSION = 1;
    // Database Name
    private static final String DATABASE_NAME = "triviaQuiz";
    // tasks table name
    private static final String TABLE_QUEST = "quest";
    // tasks Table Columns names
    private static final String KEY_ID = "id";
    private static final String KEY_QUES = "question";
    private static final String KEY_ANSWER = "answer"; //correct option
    private static final String KEY_OPTA= "opta"; //option a
    private static final String KEY_OPTB= "optb"; //option b
    private static final String KEY_OPTC= "optc"; //option c
    private SQLiteDatabase dbase;
    public DbHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }
    @Override
    public void onCreate(SQLiteDatabase db) {
        dbase=db;
        String sql = "CREATE TABLE IF NOT EXISTS " + TABLE_QUEST + " ( "
                + KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + KEY_QUES
                + " TEXT, " + KEY_ANSWER+ " TEXT, "+KEY_OPTA +" TEXT, "
                +KEY_OPTB +" TEXT, "+KEY_OPTC+" TEXT)";
        db.execSQL(sql);        
        addQuestions();
        //db.close();
    }
    private void addQuestions()
    {
        Question q1=new Question("What is JP?","Jalur Pesawat", "Jack sParrow", "Jasa Programmer", "Jasa Programmer");
        this.addQuestion(q1);
        Question q2=new Question("where the JP place?", "Monas, Jakarta", "Gelondong, Bangun Tapan, bantul", "Gelondong, Bangun Tapan, bandul", "Gelondong, Bangun Tapan, bantul");
        this.addQuestion(q2);
        Question q3=new Question("who is CEO of the JP?","Usman and Jack", "Jack and Rully","Rully and Usman", "Rully and Usman" );
        this.addQuestion(q3);
        Question q4=new Question("what do you know about JP?", "JP is programmer home", "JP also realigy home", "all answer is true","all answer is true");
        this.addQuestion(q4);
        Question q5=new Question("what do you learn in JP?","Realigy","Programming","all answer is true","all answer is true");
        this.addQuestion(q5);
    }
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldV, int newV) {
        // Drop older table if existed
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_QUEST);
        // Create tables again
        onCreate(db);
    }
    // Adding new question
    public void addQuestion(Question quest) {
        //SQLiteDatabase db = this.getWritableDatabase();
        ContentValues values = new ContentValues();
        values.put(KEY_QUES, quest.getQUESTION()); 
        values.put(KEY_ANSWER, quest.getANSWER());
        values.put(KEY_OPTA, quest.getOPTA());
        values.put(KEY_OPTB, quest.getOPTB());
        values.put(KEY_OPTC, quest.getOPTC());
        // Inserting Row
        dbase.insert(TABLE_QUEST, null, values);        
    }
    public List<Question> getAllQuestions() {
        List<Question> quesList = new ArrayList<Question>();
        // Select All Query
        String selectQuery = "SELECT  * FROM " + TABLE_QUEST;
        dbase=this.getReadableDatabase();
        Cursor cursor = dbase.rawQuery(selectQuery, null);
        // looping through all rows and adding to list
        if (cursor.moveToFirst()) {
            do {
                Question quest = new Question();
                quest.setID(cursor.getInt(0));
                quest.setQUESTION(cursor.getString(1));
                quest.setANSWER(cursor.getString(2));
                quest.setOPTA(cursor.getString(3));
                quest.setOPTB(cursor.getString(4));
                quest.setOPTC(cursor.getString(5));
                quesList.add(quest);
            } while (cursor.moveToNext());
        }
        // return quest list
        return quesList;
    }
    public int rowcount()
    {
        int row=0;
        String selectQuery = "SELECT  * FROM " + TABLE_QUEST;
        SQLiteDatabase db = this.getWritableDatabase();
        Cursor cursor = db.rawQuery(selectQuery, null);
        row=cursor.getCount();
        return row;
    }
}

这是我的问题。java 类

package com.example.android.viewpager4;
public class Question {
    private int ID;
    private String QUESTION;
    private String OPTA;
    private String OPTB;
    private String OPTC;
    private String ANSWER;
    public Question()
    {
        ID=0;
        QUESTION="";
        OPTA="";
        OPTB="";
        OPTC="";
        ANSWER="";
    }
    public Question(String qUESTION, String oPTA, String oPTB, String oPTC,
                    String aNSWER) {

        QUESTION = qUESTION;
        OPTA = oPTA;
        OPTB = oPTB;
        OPTC = oPTC;
        ANSWER = aNSWER;
    }
    public int getID()
    {
        return ID;
    }
    public String getQUESTION() {
        return QUESTION;
    }
    public String getOPTA() {
        return OPTA;
    }
    public String getOPTB() {
        return OPTB;
    }
    public String getOPTC() {
        return OPTC;
    }
    public String getANSWER() {
        return ANSWER;
    }
    public void setID(int id)
    {
        ID=id;
    }
    public void setQUESTION(String qUESTION) {
        QUESTION = qUESTION;
    }
    public void setOPTA(String oPTA) {
        OPTA = oPTA;
    }
    public void setOPTB(String oPTB) {
        OPTB = oPTB;
    }
    public void setOPTC(String oPTC) {
        OPTC = oPTC;
    }
    public void setANSWER(String aNSWER) {
        ANSWER = aNSWER;
    }

}

这是我的自定义片段代码

package com.example.android.viewpager4;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.RadioButton;
import android.widget.TextView;

import java.util.List;

/**
 * Created by Vikas on 6/19/2016.
 */
public class FirstFragment extends Fragment {
    // Store instance variables
    private String question;
    private String radio_1,radio_2,radio_3;

    private int page;



    List<Question> quesList;

    int qid=0;
    Question currentQ;
    TextView txtQuestion;
    RadioButton rda, rdb, rdc;


    // newInstance constructor for creating fragment with arguments
    public static FirstFragment newInstance(int page, String question,String radio_1,String radio_2,String radio_3)
    {
        FirstFragment fragmentFirst = new FirstFragment();
        Bundle args = new Bundle();
        args.putInt("someInt", page);
        args.putString("some_question", question);
        args.putString("some_option1",radio_1);
        args.putString("some_option1",radio_2);
        args.putString("some_option1",radio_3);

        fragmentFirst.setArguments(args);
        return fragmentFirst;
    }

    // Store instance variables based on arguments passed
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        DbHelper db = new DbHelper(getContext());
        quesList = db.getAllQuestions(); //get all the questions from database

        //getting the id of the question
        currentQ = quesList.get(qid);
        page = getArguments().getInt("someInt", 0);
        question = getArguments().getString("some_question",currentQ.getQUESTION());
        radio_1=getArguments().getString("some_option1", currentQ.getOPTA());
        radio_2=getArguments().getString("some_option2", currentQ.getOPTB());
        radio_3=getArguments().getString("some_option3", currentQ.getOPTC());
        qid++;
    }

    // Inflate the view for the fragment based on layout XML
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment1_layout, container, false);
        TextView question_view = (TextView) view.findViewById(R.id.question_id);
        question_view.setText(question);
        rda=(RadioButton)view.findViewById(R.id.radioButton1);
        rdb=(RadioButton)view.findViewById(R.id.radioButton2);
        rdc=(RadioButton)view.findViewById(R.id.radioButton3);
        rda.setText(radio_1);
        rdb.setText(radio_2);
        rdc.setText(radio_3);
        return view;
    }
}

这是我的主要活动.java

package com.example.android.viewpager4;

import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;

import java.util.List;
import java.util.Vector;

public class MainActivity extends AppCompatActivity
{
    List<Question> quesList;
    int qid=0;
    Question currentQ;



    private PagerAdapter mPagerAdapter;
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.viewpager_layout);
        initialisePaging();
    }

    private void initialisePaging()
    {

        DbHelper db = new DbHelper(this);
        quesList = db.getAllQuestions(); //get all the questions from database

        //getting the id of the question
        currentQ = quesList.get(qid);
        List<FirstFragment> fragments =new Vector<FirstFragment>();
        fragments.add(FirstFragment.newInstance(0,currentQ.getQUESTION(),currentQ.getOPTA(),currentQ.getOPTB(),currentQ.getOPTC()));
        qid++;
        fragments.add(FirstFragment.newInstance(1,currentQ.getQUESTION(),currentQ.getOPTA(),currentQ.getOPTB(),currentQ.getOPTC()));
        qid++;
        fragments.add(FirstFragment.newInstance(2,currentQ.getQUESTION(),currentQ.getOPTA(),currentQ.getOPTB(),currentQ.getOPTC()));


        mPagerAdapter = new com.example.android.viewpager4.PagerAdapter(this.getSupportFragmentManager(),fragments);
         ViewPager pager =(ViewPager)findViewById(R.id.viewpager);
         pager.setAdapter(mPagerAdapter);
    }
}

这是我的 pageadapter.java

package com.example.android.viewpager4;

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;

import java.util.List;

/**
 * Created by Vikas on 4/27/2016.
 */
public class PagerAdapter extends FragmentPagerAdapter
{
   private List<FirstFragment> fragments;

    public PagerAdapter(FragmentManager fm, List<FirstFragment> fragments) {
        super(fm);
        this.fragments = fragments;
    }

    @Override
    public Fragment getItem(int arg0)
    {
        return this.fragments.get(arg0);
    }

    @Override
    public int getCount()
    {
        return this.fragments.size();
    }

}

在整个代码之后,我在每个片段中都遇到了相同的问题,请告诉我应该做哪些更改来帮助我,请快速提前致谢


这是因为您在尝试添加问题时遇到错误。您一次又一次地添加相同的问题。

更改以下代码:

 currentQ = quesList.get(qid);
        List<FirstFragment> fragments =new Vector<FirstFragment>();
        fragments.add(FirstFragment.newInstance(0,currentQ.getQUESTION(),currentQ.getOPTA(),currentQ.getOPTB(),currentQ.getOPTC()));
        qid++;
        fragments.add(FirstFragment.newInstance(1,currentQ.getQUESTION(),currentQ.getOPTA(),currentQ.getOPTB(),currentQ.getOPTC()));
        qid++;
        fragments.add(FirstFragment.newInstance(2,currentQ.getQUESTION(),currentQ.getOPTA(),currentQ.getOPTB(),currentQ.getOPTC()));

to

 currentQ = quesList.get(qid);
        List<FirstFragment> fragments =new Vector<FirstFragment>();
        fragments.add(FirstFragment.newInstance(0,currentQ.getQUESTION(),currentQ.getOPTA(),currentQ.getOPTB(),currentQ.getOPTC()));
        qid++;
currentQ = quesList.get(qid);
        fragments.add(FirstFragment.newInstance(1,currentQ.getQUESTION(),currentQ.getOPTA(),currentQ.getOPTB(),currentQ.getOPTC()));
        qid++;
currentQ = quesList.get(qid);
        fragments.add(FirstFragment.newInstance(2,currentQ.getQUESTION(),currentQ.getOPTA(),currentQ.getOPTB(),currentQ.getOPTC()));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

制作自定义片段后应用程序中出现错误 的相关文章

  • 内部类的构造函数引用在运行时失败并出现VerifyError

    我正在使用 lambda 为内部类构造函数创建供应商ctx gt new SpectatorSwitcher ctx IntelliJ建议我将其更改为SpectatorSwitcher new反而 SpectatorSwitcher 是我正
  • Spring Boot Data JPA 从存储过程接收多个输出参数

    我尝试通过 Spring Boot Data JPA v2 2 6 调用具有多个输出参数的存储过程 但收到错误 DEBUG http nio 8080 exec 1 org hibernate engine jdbc spi SqlStat
  • 图像作为电子邮件附件

    我想构建一个应用程序 我可以在电子邮件中附加图像 打开图像并将其设置为我的壁纸 我想让它跨平台 所以你能告诉我是否可以使用phonegap 或者我是否必须为iphone和android构建一个本机应用程序 您好 如果您只想通过电子邮件附加图
  • Java ResultSet 如何检查是否有结果

    结果集 http java sun com j2se 1 4 2 docs api java sql ResultSet html没有 hasNext 方法 我想检查 resultSet 是否有任何值 这是正确的方法吗 if resultS
  • tomcat 中受密码保护的应用程序

    我正在使用 JSP Servlet 开发一个Web应用程序 并且我使用了Tomcat 7 0 33 as a web container 所以我的要求是tomcat中的每个应用程序都会password像受保护的manager applica
  • 使用片段时应用程序崩溃

    我正在处理碎片和 我的代码中有一个我找不到的问题 logcat 指向我的一个片段中的这段代码 Override public View onCreateView LayoutInflater inflater ViewGroup conta
  • Android 构建发布失败,原因为:java.lang.ArrayIndexOutOfBoundsException:213(pr​​oguard 问题)

    我的项目使用调试构建变体构建得很好 但使用发布变体 Android Studio 会抛出 引起原因 java lang ArrayIndexOutOfBoundsException 213 可能是什么问题 如果我设置minifyEnable
  • 尝试将 Web 服务部署到 TomEE 时出现“找不到...的 appInfo”

    我有一个非常简单的项目 用于培训目的 它是一个 RESTful Web 服务 我使用 js css 和 html 创建了一个客户端 我正在尝试将该服务部署到 TomEE 这是我尝试部署时遇到的错误 我在这里做错了什么 刚刚遇到这个问题 我曾
  • okhttp 获取失败响应

    我已经在我的 android 客户端中实现了 okhttp 来进行网络调用 当我收到失败响应时 我会收到失败代码以及与该代码相关的文本作为消息 但我没有收到服务器发送给我的自定义失败响应 在我实施的代码中的失败响应中 我收到的消息只是 错误
  • 为什么 Java 8 不允许非公共默认方法?

    让我们举个例子 public interface Testerface default public String example return Hello public class Tester implements Testerface
  • 使用 AsyncTask 传递值

    我一直在努力解决这个问题 但我已经到了不知道该怎么办的地步 我想做的是使用一个类下载文件并将其解析为字符串 然后将该字符串发送到另一个类来解析 JSON 内容 所有部件都可以单独工作 并且我已经单独测试了所有部件 我只是不知道如何将值发送到
  • 不接受任何内容也不返回任何内容的函数接口[重复]

    这个问题在这里已经有答案了 JDK中是否有一个标准的函数式接口 不接受也不返回任何内容 我找不到一个 像下面这样 FunctionalInterface interface Action void execute 可运行怎么样 Functi
  • 关键字“table”附近的语法不正确,无法提取结果集

    我使用 SQL Server 创建了一个项目 其中包含以下文件 UserDAO java public class UserDAO private static SessionFactory sessionFactory static se
  • java.io.Serialized 在 C/C++ 中的等价物是什么?

    C C 的等价物是什么java io Serialized https docs oracle com javase 7 docs api java io Serializable html 有对序列化库的引用 用 C 序列化数据结构 ht
  • Android 如何将总天数准确更改为年、月、日?

    我正在做一个应用程序 该应用程序与根据给定的生日日期输入获取一个人的年龄有关 为此 我从下面的代码中获取从该日期到当前日期的总天数 String strThatDay 1991 05 10 SimpleDateFormat formatte
  • 插件“Android Bundle Support”不兼容

    大家好 自从上次更新以来 当我启动 android studio 时 我遇到了一个非常奇怪的错误 我有这个错误 插件错误 插件 Android Bundle Support 不兼容 直到构建 AI 195 SNAPSHOT 我在网上找不到任
  • 如果没有抽象成员,基类是否应该标记为抽象?

    如果一个类没有抽象成员 可以将其标记为抽象吗 即使没有实际理由直接实例化它 除了单元测试 是的 将不应该实例化的基类显式标记为抽象是合理且有益的 即使在没有抽象方法的情况下也是如此 它强制执行通用准则来使非叶类抽象 它阻止其他程序员创建该类
  • Dagger 2 中“HasFragmentInjector”的实际用法是什么

    我之前已经实现了 dagger2 v2 2 但现在他们也添加了 dagger android 部分 所以我正在用它创建示例项目 我知道旧的方法论 Provide and Modules and 成分等注释 但从 Dagger 2 8 开始
  • 双枢轴快速排序和快速排序有什么区别?

    我以前从未见过双枢轴快速排序 是快速排序的升级版吗 双枢轴快速排序和快速排序有什么区别 我在 Java 文档中找到了这个 排序算法是双枢轴快速排序 作者 弗拉基米尔 雅罗斯拉夫斯基 乔恩 本特利和约书亚 布洛赫 这个算法 在许多数据集上提供
  • Android 后台倒计时器

    我有一个 Android 应用程序 它管理一个倒计时器 类 CountDownTimer 它显示在应用程序屏幕中 以显示到达 00 00 还剩多少时间 我现在的问题是 当我按主页按钮或启动另一个应用程序时 应用程序 计时器不会在后台运行 所

随机推荐

  • Python属性函数的C代码?

    我真的很好奇howPython的解释器创建一个属性x从一个方法中x通过x property x 如果我能看一下C代码 我会感觉好多了 类型定义在descrobject c file http hg python org cpython fi
  • ID动态文档firestore

    如何在firestore中制作该文档的IDQEoevSjHlswgk44nVTsr动态的 即根据该集合中的 ID 进行更改 我正在使用 angularfire2 5 0 0 rc 11 这就是我所拥有的 firebase service t
  • 如何在Svelte中动态渲染组件?

    我试图循环遍历一个数组来渲染具有以下值的组件type each contents as content lt content type gt each 期望的输出
  • 为什么Activity结束时会抛出NPE?

    我有一个错误 这几天来一直让我发疯 不幸的是 我无法向您展示代码 原因有两个 我的老板不会欣赏它 并且代码库太大而无法共享 每当活动完成时就会发生该错误 无论是因为我调用 finish 还是因为操作系统破坏了它 问题是 是什么 或可能 导致
  • FullCalendar Scheduler 列标题格式

    我正在使用 FullCalendar 和调度程序 最新版本 我想将列标题格式替换为 DM dddd 我尝试使用 columnHeaderFormat 但它似乎不起作用 我也尝试使用旧的 即columnFormat 但它仍然不起作用 docu
  • 对 getchar 和 scanf 感到困惑

    我真的很困惑的用法getchar and scanf 这两者有什么区别 我知道scanf 和家人 从用户 或文件 处获取一个字符一个字符并将其保存到一个变量中 但它是立即执行还是在按下某些内容后执行此操作 Enter 我不太理解这段代码 我
  • 使用新的 Flutter Apk 更新 Android 应用程序 (Google Play)

    我一年前创建了一个 Android 应用程序 我想用新的 apk 版本更新它 但是用 flutter 构建 这可能吗 如何 谢谢 是的 这是完全可能的 您需要做的三件事 使用与旧应用程序相同的包名称 应用程序 ID 使用与旧应用程序相同的签
  • 如何使用 Sqlite.swift 获取列名称列表?

    出于调试目的 我试图获取 SQLite 表中列名的简单列表 我正在使用SQLite swift框架 https github com stephencelis SQLite swift 我的问题比如何在 sqlite3 iPhone 上获取
  • 使用ffmpeg删除重复的帧和连接的音频

    使用 ffmpeg 我能够使用以下命令从视频中删除重复的帧ffmpeg i in mp4 vf mpdecimate setpts N FRAME RATE TB out mp4 然而 音频比视频持续的时间更长 显然是因为该命令仅删除了视频
  • 无法使用 Axios 或 SuperAgent 从 React 应用程序进行基本身份验证

    我尝试使用 axios 发出 GET 请求 但总是收到 401 仅当我从 React 应用程序发送请求时才会发生这种情况 axios get http localhost 8080 vehicles withCredentials true
  • 无法将类型“System.Collections.Generic.IEnumerable”隐式转换为“System.Collections.Generic.List

    我有下面的代码 List
  • 如何转义parameters.yml symfony2中的“%”

    我想逃脱一个角色 在文件 parameters yml中 因为我的密码以 database driver3 pdo sqlsrv database host3 192 168 10 10 database port3 1455 databa
  • 使用python在json中递归搜索

    我有一个像这样的 json result timestamp 1234567890 textsList text some text here 0 otherList type Nothing type Recursive data tim
  • 从 SSIS 中的 CSV 导入 yyyyMMdd 日期

    我有 12 列使用yyyymmdd格式 在里面数据流任务 我有一个平面文件源 a 派生列任务 and an OLE DB 目标 我将以下表达式应用于派生列任务 DT DBDATE SUBSTRING DT STR 10 1252 Date
  • 使用“IFRAME”的沙箱模式时,无法获取在 Google Apps 脚本中工作的链接

    在 Google Apps 脚本中 下面的代码在默认沙箱模式下适用于我 但是当我将沙箱模式更改为 IFRAME 时 该代码不起作用 在 IE11 中 单击第一个按钮后出现空白页面 在 Chrome 中 第一个按钮可以工作 但单击后续按钮会显
  • 多列的唯一约束

    我正在使用 SEAM 2 Hibernate 以及 PostgreSQL 9 数据库 我有下表 Active Band active band id serial active band user text active band date
  • 改变线性布局android中的视图顺序

    如您所知 线性布局中视图的顺序与 xml 文件中视图的顺序相关 是否可以通过索引之类的方法用java代码更改该顺序 我会尝试删除所有视图removeView view http developer android com reference
  • 将图像传递给另一个活动

    感谢这个网站 我弄清楚了如何在活动之间传递字符串值 但是我在传递图像时遇到了麻烦 我想要做的是让用户单击一个按钮来打开图库并允许选择图片 然后我有另一个按钮可以打开另一个显示 ImageView 的活动 我希望能够从上一个活动中选择 Ima
  • 如何解决CWE-259:使用硬编码密码?

    我向 Veracode 安全扫描工具提交了我的应用程序 EAR 并在下面的代码中发现了这个缺陷 private String url jdbc mysql localhost 8081 sql private String userName
  • 制作自定义片段后应用程序中出现错误

    我制作了一个测验应用程序 其中我将问题存储在数据库中 然后以列表的形式从数据库中取出 我正在制作自定义片段以从数组列表上传问题 但每个片段上只得到 1 个问题 这是我的数据库代码 package com example android vi