解决方案 »
- android 的读短信功能就是先显示联系人和少量信息,再点击就出来内容
- 中国没有能力开发手机操作系统吗
- 紧急求教安卓发送push信息
- 现在Android开发月薪怎么样?J2EE转Android是否值得?
- 有搞Janus DRM的吗
- TextView在有多行文本的情况下怎么使每一行都居中对齐
- 還是搞不懂 import static 與 import 有何不同之處!
- Attempt to invoke virtual method 'void com.gizwits.gizwifisdk.api.GizWifiDevice
- 【新手求助】关于Android Studio
- Android Studio 出现Session ‘app’: Error Installing APKs
- 加载layout时出现问题,求解惑
- AndroidStudio里面的虚拟机sdcard在哪里
从这里来看好像是监听器问题,但是我找不出错误在哪,58行代码如下还有,我断点调试的时候savedInstanceState的值为null
View rootView = (LayoutInflater.from(context)).inflate(resource, root);
//context是你的上下文,一般可以用this,如果在辅助类里面就需要自己传一个context了;
//resource是你的布局,R.Layout.xxx;
//root是ViewGroup一般为NULL;
(Button)rootView.findViewById(R.id.resister_housemaster_backbutton);
mTrueButton = (Button)xxxview.findviewById(R.id.true_button);
其中的xxxview是你这个button所在的view。
把View.OnClickListener改为OnClickListener,试下?
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;public class QuizActivity extends Activity { private Button mTrueButton;
private Button mFalseButton;
private Button mNextButton;
private TextView mQuestionTextView;
private TrueFalse[] mQuestionBank=new TrueFalse[]{
new TrueFalse(R.string.question_oceans,true),
new TrueFalse(R.string.question_mideast,false),
new TrueFalse(R.string.question_africa,false),
};
private int mCurrentIndex=0;
private void checkAnswer(boolean userPressedTrue){
boolean answerIsTrue=mQuestionBank[mCurrentIndex].isTrueQuestion();
int messageResId=0;
if(userPressedTrue==answerIsTrue){
messageResId=R.string.correct_toast;
}
else{
messageResId=R.string.incorrect_toast;
}
Toast.makeText(this, messageResId, Toast.LENGTH_SHORT).show();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);//activity实例创建后调用该方法
//setContentView(R.layout.activity_quiz);//获取activity的用户界面,即生成指定布局的视图并将其放置在屏幕上
mQuestionTextView=(TextView)findViewById(R.id.question_text_view);
mTrueButton=(Button)findViewById(R.id.true_button);//引用已生成的组件,返回一个视图对象
mTrueButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
checkAnswer(true);
}
});
mFalseButton=(Button)findViewById(R.id.false_button);
mFalseButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
checkAnswer(false);
}
});
mNextButton=(Button)findViewById(R.id.next_button);
mNextButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
mCurrentIndex=(mCurrentIndex+1)%mQuestionBank.length;
updateQuestion();
}
});
setContentView(R.layout.activity_quiz);//获取activity的用户界面,即生成指定布局的视图并将其放置在屏幕上
updateQuestion();
}
private void updateQuestion(){
int question=mQuestionBank[mCurrentIndex].getQuestion();
mQuestionTextView.setText(question);
} @Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.quiz, menu);
return true;
}
}
这是整个activity。只有一个activity,刚开始学,碰到这个错误一直都过不了。把view.onClickListener改成onClickListener貌似不行,且xml也没有错。。先多谢大家了。
打个比方,你要去某地拜访某人,你知道拜访的是谁,但是没有地址,你怎么去?这系统不给你包空指针才怪了。
你说你放后面了,你这个逻辑都没弄清楚。汗。
setContentView(R.layout.activity_quiz);这一句如果没有加修饰语句,(比如要求不要标题栏/全屏之类的)那么一般位于super.onCreate(savedInstanceState);之后,并且紧随其后。
通俗点说吧,你要找到你写在XML里面的控件是通过 this.findViewById ,但是你的这些控件都画在R.layout.activity_quiz这个rootView上,这前面这个this指的就是这个rootView,你都没告诉系统在哪里找控件,就直接让系统找控件。你自己觉得能找到吗?
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);//activity实例创建后调用该方法
//setContentView(R.layout.activity_quiz);//获取activity的用户界面,即生成指定布局的视图并将其放置在屏幕上
这个setContentView不能注释掉,必须在onCreeate方法里面调用。而且必须是在最上边。没有理由,在Activity创建的时候必须加载XML布局文件。