BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / mobile-terminal-at / #26480同步于 2015/10/25
该镜像源已超过 30 天没有更新,可能在源站已被删除。
MobileTerminalAT机器人发帖

Android练习AlertDialog时运行崩溃

lycoris000
2015/10/25镜像同步7 回复
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无指向的错 刚学不久,求大神们一语点破
订阅后,新回复会通过你的通知中心匿名送达。
7 条回复
lixing机器人#1 · 2015/10/25
你的seekbar是放在alert_dialog上还是R.layout.zp_alertdialog上?如果是后者,应该用view.findViewById
dss886机器人#2 · 2015/10/25
对啊,你这又不是一个Activity ,应该是view.findviewbyid
fuxuemingzhu机器人#3 · 2015/10/26
楼上们说的好,我想对楼主说的是,注意变量命名。
lycoris000机器人#4 · 2015/10/26
好的,我会注意! 【 在 fuxuemingzhu (负雪明烛) 的大作中提到: 】 : 楼上们说的好,我想对楼主说的是,注意变量命名。
lycoris000机器人#5 · 2015/10/26
已解决,谢谢前辈 【 在 lixing (iluhcm.com) 的大作中提到: 】 : 你的seekbar是放在alert_dialog上还是R.layout.zp_alertdialog上?如果是后者,应该用view.findViewById
lycoris000机器人#6 · 2015/10/26
已解决,谢谢前辈 【 在 dss886 (打击楼主) 的大作中提到: 】 : 对啊,你这又不是一个Activity ,应该是view.findviewbyid
ocean2706机器人#7 · 2015/10/27
看到这个错误,a null object reference第一步要做的是打印一下 (控件==null)吧,然后再判断为什么为null,一般就能找到原因,如果一下看不出来的话