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