Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 无法插入从getextra接收的值_Android_Sqlite_Insert - Fatal编程技术网

Android 无法插入从getextra接收的值

Android 无法插入从getextra接收的值,android,sqlite,insert,Android,Sqlite,Insert,我正在使用getextra和putextra从以前的活动中检索值 但在数据库中插入变量时,变量失去了保存在数据库中的值或变为null。 我无法理解可能是什么问题。 请检查我的密码。 插入操作在最后一次单击单选按钮时完成 package com.tmm.android.chuck; import java.util.ArrayList; import java.util.Calendar; import java.util.List; import android.app.Activity;

我正在使用getextra和putextra从以前的活动中检索值 但在数据库中插入变量时,变量失去了保存在数据库中的值或变为null。 我无法理解可能是什么问题。 请检查我的密码。 插入操作在最后一次单击单选按钮时完成

package com.tmm.android.chuck;

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

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.RadioGroup.OnCheckedChangeListener;
import android.widget.TextView;

import com.tmm.android.chuck.db.DBAdapter;
import com.tmm.android.chuck.quiz.GamePlay;
import com.tmm.android.chuck.quiz.Question;
import com.tmm.android.chuck.util.Utility;

/**
 * @author Sanket Naik
 * 
 */
public class QuestionActivity extends Activity implements
        OnCheckedChangeListener {

    private Question currentQ;
    final DBAdapter db = new DBAdapter(this);
    private GamePlay currentGame;
    Calendar C = Calendar.getInstance();
    String text, topic1;
    String mon = C.get(Calendar.MONTH) + 1 + "";
    static int a = 0;
    ArrayList<String> getselect = new ArrayList<String>();

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.question);

        // Bundle b = getIntent().getExtras();
        if (a < 1) {

            topic1 = getIntent().getStringExtra("itemname");

            Log.i("sanket", topic1);
        }
        /**
         * Configure current game and get question
         */
        currentGame = ((ChuckApplication) getApplication()).getCurrentGame();
        currentQ = currentGame.getNextQuestion();

        RadioGroup rdgb = (RadioGroup) findViewById(R.id.group1);
        rdgb.setOnCheckedChangeListener(this);
        /**
         * Update the question and answer options..
         */
        setQuestions();

    }

    private void setQuestions() {
        // set the question text from current question
        String question = Utility.capitalise(currentQ.getQuestion()) + "?";
        TextView qText = (TextView) findViewById(R.id.question);
        qText.setText(question);

        // set the available options
        List<String> answers = currentQ.getQuestionOptions();
        TextView option1 = (TextView) findViewById(R.id.answer1);
        option1.setText(Utility.capitalise(answers.get(0)));

        TextView option2 = (TextView) findViewById(R.id.answer2);
        option2.setText(Utility.capitalise(answers.get(1)));

        TextView option3 = (TextView) findViewById(R.id.answer3);
        option3.setText(Utility.capitalise(answers.get(2)));

        TextView option4 = (TextView) findViewById(R.id.answer4);
        option4.setText(Utility.capitalise(answers.get(3)));
    }

    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (a > 0) {
            switch (keyCode) {
            case KeyEvent.KEYCODE_BACK:
                return true;
            }
        }
        return super.onKeyDown(keyCode, event);

    }

    private boolean checkAnswer() {
        String answer = getSelectedAnswer();
        if (answer == null) {

            return false;
        } else {

            if (currentQ.getAnswer().equalsIgnoreCase(answer)) {

                currentGame.incrementRightAnswers();
            } else {

                currentGame.incrementWrongAnswers();
            }

            return true;
        }
    }

    /**
     * 
     */
    public String getSelectedAnswer() {
        RadioButton c1 = (RadioButton) findViewById(R.id.answer1);
        RadioButton c2 = (RadioButton) findViewById(R.id.answer2);
        RadioButton c3 = (RadioButton) findViewById(R.id.answer3);
        RadioButton c4 = (RadioButton) findViewById(R.id.answer4);
        if (c1.isChecked()) {
            return c1.getText().toString();

        }
        if (c2.isChecked()) {
            return c2.getText().toString();
        }
        if (c3.isChecked()) {
            return c3.getText().toString();
        }
        if (c4.isChecked()) {
            return c4.getText().toString();
        }

        return null;
    }

    @Override
    public void onCheckedChanged(RadioGroup group, int checkedId) {

        a++;

        if (!checkAnswer())
            return;

        /**
         * check if end of game
         */
        if (currentGame.isGameOver()) {

            try {
                db.open();
                String total = currentGame.getRight() + "";
                db.insertOptions(topic1, total, mon);
                db.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
            Intent i = new Intent(this, EndgameActivity.class);
            startActivity(i);
            a = 0;
            finish();
        } else {
            Intent i = new Intent(this, QuestionActivity.class);
            startActivity(i);
            finish();
        }
    }

}
package com.tmm.android.chuck;
导入java.util.ArrayList;
导入java.util.Calendar;
导入java.util.List;
导入android.app.Activity;
导入android.content.Intent;
导入android.os.Bundle;
导入android.util.Log;
导入android.view.KeyEvent;
导入android.widget.RadioButton;
导入android.widget.RadioGroup;
导入android.widget.RadioGroup.OnCheckedChangeListener;
导入android.widget.TextView;
导入com.tmm.android.chuck.db.DBAdapter;
导入com.tmm.android.chuck.quick.GamePlay;
导入com.tmm.android.chuck.quick.Question;
导入com.tmm.android.chuck.util.Utility;
/**
*@作者Sanket Naik
* 
*/
公共类QuestionActivity扩展了活动实现
OnCheckedChangeListener{
私人问题;
最终DBAdapter db=新的DBAdapter(本);
私人游戏;
Calendar C=Calendar.getInstance();
字符串文本,主题1;
字符串mon=C.get(Calendar.MONTH)+1+“”;
静态int a=0;
ArrayList getselect=新建ArrayList();
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.question);
//Bundle b=getIntent().getExtras();
if(a<1){
topic1=getIntent().getStringExtra(“itemname”);
日志i(“sanket”,主题1);
}
/**
*配置当前游戏并获取问题
*/
currentGame=((ChuckApplication)getApplication()).getCurrentGame();
currentQ=currentGame.getNextQuestion();
放射组rdgb=(放射组)findViewById(R.id.group1);
setOnCheckedChangeListener(这个);
/**
*更新问题和答案选项。。
*/
设置问题();
}
私人问题{
//从当前问题设置问题文本
字符串问题=Utility.capitalize(currentQ.getQuestion())+“?”;
TextView qText=(TextView)findViewById(R.id.question);
qText.setText(问题);
//设置可用选项
列表答案=currentQ.getQuestionOptions();
TextView选项1=(TextView)findViewById(R.id.answer1);
选项1.setText(Utility.capitalize(answers.get(0));
TextView选项2=(TextView)findViewById(R.id.answer2);
选项2.setText(Utility.capitalize(answers.get(1));
TextView选项3=(TextView)findViewById(R.id.answer3);
选项3.setText(实用程序.大写(答案.获取(2));
TextView选项4=(TextView)findViewById(R.id.answer4);
选项4.setText(实用程序.capitalize(answers.get(3));
}
公共布尔onKeyDown(int-keyCode,KeyEvent事件){
如果(a>0){
开关(钥匙代码){
case KeyEvent.KEYCODE\u返回:
返回true;
}
}
返回super.onKeyDown(keyCode,event);
}
私有布尔校验应答(){
字符串应答=getSelectedAnswer();
如果(答案==null){
返回false;
}否则{
if(currentQ.getAnswer().equalsIgnoreCase(answer)){
currentGame.incrementRightAnswers();
}否则{
currentGame.IncrementErrorAnswers();
}
返回true;
}
}
/**
* 
*/
公共字符串getSelectedAnswer(){
RadioButton c1=(RadioButton)findViewById(R.id.answer1);
RadioButton c2=(RadioButton)findViewById(R.id.answer2);
RadioButton c3=(RadioButton)findViewById(R.id.answer3);
RadioButton c4=(RadioButton)findViewById(R.id.answer4);
if(c1.isChecked()){
返回c1.getText().toString();
}
如果(c2.isChecked()){
返回c2.getText().toString();
}
if(c3.isChecked()){
返回c3.getText().toString();
}
if(c4.isChecked()){
返回c4.getText().toString();
}
返回null;
}
@凌驾
检查更改后的公共无效(RadioGroup组,int checkedId){
a++;
如果(!checkAnswer())
回来
/**
*检查游戏是否结束
*/
if(currentGame.isGameOver()){
试一试{
db.open();
字符串总数=currentGame.getRight()+“”;
db.插入选项(主题1,总计,周一);
db.close();
}捕获(例外e){
e、 printStackTrace();
}
意向i=新意向(此,EndgameActivity.class);
星触觉(i);
a=0;
完成();
}否则{
意图i=新意图(此,QuestionActivity.class);
星触觉(i);
完成();
}
}
}
正在插入,但未插入topic1的值,插入了mon的值,总计。仅表的第一列为空
但同时在OnCreate()中,当我打印topic1的值时,它会显示出来

始终使用putExtra将值发送到另一个活动:

Intent i = new Intent(this, EndgameActivity.class);
i.putExtra("itemname", Value) // Value can be almost of any type
startActivity(i);
finish();
选中此项:

U没有收到我的信息,我正在接收此页面上的值,我想将其插入数据库。好的,对不起,我的错误!请提供方法db.insertOptions(主题1,总计,周一)中的代码;因此,我看不出其中是否有那么好的地方,因为根据我在上面代码中的理解,一切都应该正常工作。请显示db.insertOptions()和database create table语句的代码。