亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

在DialogManager代碼中使用private Dialog dialog;好像有問題,代碼不錯就是包空指針異常,使用AlertDialog.Builder解決了這個問題:

package com.xuliugen.weichat.view;


import android.app.AlertDialog;

import android.content.Context;

import android.view.LayoutInflater;

import android.view.View;

import android.widget.ImageView;

import android.widget.TextView;


import com.xuliugen.weichat.R;


/**

?* 用于管理Dialog

?*?

?* @author xuliugen

?*?

?*/

public class DialogManager {


private AlertDialog.Builder builder;

private ImageView mIcon;

private ImageView mVoice;

private TextView mLable;


private Context mContext;

private AlertDialog dialog;//用于取消AlertDialog.Builder


/**

* 構造方法 傳入上下文

*/

public DialogManager(Context context) {

this.mContext = context;

}


// 顯示錄音的對話框

public void showRecordingDialog() {

builder = new AlertDialog.Builder(mContext, R.style.AudioDialog);

LayoutInflater inflater = LayoutInflater.from(mContext);

View view = inflater.inflate(R.layout.dialog_recorder,null);

mIcon = (ImageView) view.findViewById(R.id.id_recorder_dialog_icon);

mVoice = (ImageView) view.findViewById(R.id.id_recorder_dialog_voice);

mLable = (TextView) view.findViewById(R.id.id_recorder_dialog_label);

builder.setView(view);

builder.create();

dialog = builder.show();

}

public void recording(){

if(dialog != null && dialog.isShowing()){ //顯示狀態

mIcon.setVisibility(View.VISIBLE);

mVoice.setVisibility(View.VISIBLE);

mLable.setVisibility(View.VISIBLE);

mIcon.setImageResource(R.drawable.recorder);

mLable.setText("手指上滑,取消發送");

}

}


// 顯示想取消的對話框

public void wantToCancel() {

if(dialog != null && dialog.isShowing()){ //顯示狀態

mIcon.setVisibility(View.VISIBLE);

mVoice.setVisibility(View.GONE);

mLable.setVisibility(View.VISIBLE);

mIcon.setImageResource(R.drawable.cancel);

mLable.setText("松開手指,取消發送");

}

}


// 顯示時間過短的對話框

public void tooShort() {

if(dialog != null && dialog.isShowing()){ //顯示狀態

mIcon.setVisibility(View.VISIBLE);

mVoice.setVisibility(View.GONE);

mLable.setVisibility(View.VISIBLE);

mIcon.setImageResource(R.drawable.voice_to_short);

mLable.setText("錄音時間過短");

}

}


// 顯示取消的對話框

public void dimissDialog() {

if(dialog != null && dialog.isShowing()){ //顯示狀態

dialog.dismiss();

dialog = null;

}

}


// 顯示更新音量級別的對話框

public void updateVoiceLevel(int level) {

if(dialog != null && dialog.isShowing()){ //顯示狀態

mIcon.setVisibility(View.VISIBLE);

mVoice.setVisibility(View.VISIBLE);

mLable.setVisibility(View.VISIBLE);

//設置圖片的id

int resId = mContext.getResources().getIdentifier("v"+level, "drawable", mContext.getPackageName());

mVoice.setImageResource(resId);

}

}


}


正在回答

1 回答

恩,可能和Dialog的style有關系,可以嘗試通過設置parent屬性解決

<style?name="Theme_AudioDialog"?parent="@android:Theme.Dialog">

最后,多謝分享解決方案。

0 回復 有任何疑惑可以回復我~
#1

小牛牛1號

真的是這個問題
2015-09-22 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
Android-仿微信語音聊天
  • 參與學習       43189    人
  • 解答問題       248    個

結合自定義View和API,Dialog管理等實現實現微信語音

進入課程

在DialogManager代碼中使用private Dialog dialog;好像有問題,代碼不錯就是包空指針異常,使用AlertDialog.Builder解決了這個問題:

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號