마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

제가 무언가 잘못이해한건가요?다이얼로그 프래그먼트입니다.

0 추천

프래그먼트 다이얼로그를 생성하고

그안에 있는 텍스트뷰를 상황에따라 바꾸고 싶어 아래와 같이 코드를 구성하였습니다.

 

package com.zettamedia.kivi.FragmentDialog;
 
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
 
import com.zettamedia.kivi.LoginRegisterActivity;
import com.zettamedia.kivi.R;
import com.zettamedia.kivi.Interface.OnDialogFragmentCommonClickListener;
 
public class DialogFragmentCommon extends BaseDialogFragment {
public static final int NONE_TYPE = 0x0000;
public static final int CONFIRM_TYPE = 0x0001;
public static final int CONFIRM_CANCLE_TYPE = 0x0002;
public static final int THREE_EXTEND_TYPE = 0x0003;
 
private Button mConfirmButton, mCancleButton, mExtendButton1;
private TextView mTitleTextView, mDescriptionTextView, mSubDescriptionTextView;
private int mType;
private OnDialogFragmentCommonClickListener mCommonClickListener;
 
public DialogFragmentCommon(int buttonType) {
this.mType = buttonType;
}
 
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
}
 
@Override
public View onCreateView(LayoutInflater inflater,
@Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
// TODO Auto-generated method stub
 
getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE);
getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
//getDialog().getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND); //화면어두워지게 하는거 막는 로직
 
View view = inflater.inflate(R.layout.dialog_fragment_common, container);
mTitleTextView = (TextView)view.findViewById(R.id.dialog_common_title_textView);
mDescriptionTextView = (TextView)view.findViewById(R.id.dialog_common_description_textView);
mSubDescriptionTextView = (TextView)view.findViewById(R.id.dialog_common_subDescription_textView);
mConfirmButton = (Button)view.findViewById(R.id.dialog_common_Button1);
mCancleButton = (Button)view.findViewById(R.id.dialog_common_Button2);
mExtendButton1 = (Button)view.findViewById(R.id.dialog_common_Button3);
 
switch(mType) {
case NONE_TYPE :
mConfirmButton.setVisibility(View.GONE);
mCancleButton.setVisibility(View.GONE);
mExtendButton1.setVisibility(View.GONE);
break;
 
case CONFIRM_TYPE :
mConfirmButton.setVisibility(View.VISIBLE);
mCancleButton.setVisibility(View.GONE);
mExtendButton1.setVisibility(View.GONE);
break;
 
case CONFIRM_CANCLE_TYPE :
mCancleButton.setVisibility(View.VISIBLE);
mConfirmButton.setVisibility(View.GONE);
mExtendButton1.setVisibility(View.GONE);
break;
 
case THREE_EXTEND_TYPE :
mConfirmButton.setVisibility(View.VISIBLE);
mCancleButton.setVisibility(View.VISIBLE);
mExtendButton1.setVisibility(View.VISIBLE);
break;
}
return view;
}
 
@Override
public void onActivityCreated(Bundle arg0) {
// TODO Auto-generated method stub
super.onActivityCreated(arg0);
 
mConfirmButton.setVisibility(View.VISIBLE);
mConfirmButton.setText("확인");
 
mTitleTextView.setText("기본 텍스트");
mDescriptionTextView.setText("기본 텍스트");
 
mConfirmButton.setOnClickListener(onClickListener);
mCancleButton.setOnClickListener(onClickListener);
mExtendButton1.setOnClickListener(onClickListener);
}
 
View.OnClickListener onClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(mCommonClickListener != null) {
mCommonClickListener.onDialogFragmentCommonClickListener(v);
}else {
Log.i("CommonDialog Listener", "Listener is null");
}
}
};
 
//문제의 부분
public void setTitle(String title) {
this.mTitleTextView.setText(title);
}
 
public void setDescription(String desc) {
this.mDescriptionTextView.setText(desc);
this.mSubDescriptionTextView.setVisibility(View.GONE);
}
 
public void setSubDescription(String subDesc) {
this.mSubDescriptionTextView.setText(subDesc);
this.mSubDescriptionTextView.setVisibility(View.VISIBLE);
}
 
public void setOnCommonClickListener(OnDialogFragmentCommonClickListener listener) {
this.mCommonClickListener = listener;
}
}
 
 
위와 같이 공통다이얼로그프래그먼트 클래스를 만들었고
외부에서 경우에따라 텍스트뷰 몇개를 바꾸려고 하였습니다.
 
alertDialog.setTitle("알림");
alertDialog.setDescription("한번에 최대 100개까지 선택 가능합니다.");
alertDialog.show(fm, "contents_limit_selected_dialog");
사용할때 위와같이 사용하였는데 널포인터익셉션이 걸려버리네요ㅠㅠ
 
제가 뭘 잘못한걸까요?
 
 
 
 
갸아악 (21,260 포인트) 님이 2014년 10월 14일 질문

1개의 답변

0 추천
 
채택된 답변
show 할 때 oncreate 가 호출 되므로 setTitle 과 setDescription 을 show 이후에 호출하세요 아니면 string 변수를 만들어서 그걸 oncreate 에 적용시키세요
aucd29 (218,390 포인트) 님이 2014년 10월 14일 답변
갸아악님이 2014년 10월 14일 채택됨
오마이갓 해결되었습니다.
감사합니다.^^
...