返回信息流package com.example.activitytest;
import android.app.AlertDialog;
import android.content.Context;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.Button;
import android.widget.SeekBar;
import android.widget.TextView;
import android.view.View.OnClickListener;
import android.widget.Toast;
public class ZP_AlertDialog extends AlertDialog implements OnClickListener{
private Button Upload;
private SeekBar RankSeekbar;
private TextView HintInfo,StateInfo;
private int getresult;
protected ZP_AlertDialog(Context context) {
super(context);
// TODO Auto-generated constructor stub
final View view = getLayoutInflater().inflate(R.layout.zp_alertdialog, null);
RankSeekbar=(SeekBar)findViewById(R.id.rank_seekbar);
HintInfo = (TextView) findViewById(R.id.seekbar_hintinfo);
StateInfo = (TextView) findViewById(R.id.seekbar_stateinfo);
Upload=(Button)findViewById(R.id.up_load);
RankSeekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
// 停止拖动时执行
@Override
public void onStopTrackingTouch(SeekBar RankSeekbar) {
// TODO Auto-generated method stub
StateInfo.setText("停止拖动");
}
// 在进度开始改变时执行
@Override
public void onStartTrackingTouch(SeekBar RankSeekBar) {
// TODO Auto-generated method stub
StateInfo.setText("进度开始改变");
}
// 当进度发生改变时执行
/**
* 用Handler来更新状态
*/
Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
HintInfo.setText("当前分数为 : "
+ msg.getData().getInt("key") + "/100");
}
};
@Override
public void onProgressChanged(SeekBar RankSeekBar, int progress,
boolean fromUser) {
StateInfo.setText("正在拖动分数条");
Message message = new Message();
Bundle bundle = new Bundle();// 存放数据
int pro = RankSeekBar.getProgress();
int num = RankSeekBar.getMax();
int result = (int) (((float)pro /(float) num) * 100);
getresult=result;
bundle.putInt("key", result);
message.setData(bundle);
message.what = 0;
handler.sendMessage(message);
}
});
Upload.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch(v.getId()){
case R.id.up_load:
String inputText=String.valueOf(getresult);
Toast.makeText(this.getContext(), "上传成功,你的分数为"+inputText, Toast.LENGTH_SHORT).show();
break;
default:
break;
}
}
}
LOGCAT错误如下:
10-25 22:30:42.883: E/AndroidRuntime(17960): java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.SeekBar.setOnSeekBarChangeListener(android.widget.SeekBar$OnSeekBarChangeListener)' on a null object reference
但是如果把SeekBar去掉的话依旧报的是Button无指向的错
刚学不久,求大神们一语点破
这是一条镜像帖。来源:北邮人论坛 / mobile-terminal-at / #26480同步于 2015/10/25
该镜像源已超过 30 天没有更新,可能在源站已被删除。
MobileTerminalAT机器人发帖
Android练习AlertDialog时运行崩溃
lycoris000
2015/10/25镜像同步7 回复
订阅后,新回复会通过你的通知中心匿名送达。
7 条回复
你的seekbar是放在alert_dialog上还是R.layout.zp_alertdialog上?如果是后者,应该用view.findViewById
已解决,谢谢前辈
【 在 lixing (iluhcm.com) 的大作中提到: 】
: 你的seekbar是放在alert_dialog上还是R.layout.zp_alertdialog上?如果是后者,应该用view.findViewById
已解决,谢谢前辈
【 在 dss886 (打击楼主) 的大作中提到: 】
: 对啊,你这又不是一个Activity ,应该是view.findviewbyid
看到这个错误,a null object reference第一步要做的是打印一下 (控件==null)吧,然后再判断为什么为null,一般就能找到原因,如果一下看不出来的话