총 게시물 933건, 최근 0 건 안내 RSS 글쓰기
이전글  다음글  목록 글쓰기
[안드로이드]

도와주세요

글쓴이 : Tunning 날짜 : 2017-10-24 (화) 17:50 조회 : 496
글주소 : http://www.androidside.com/B49_best/12824
 
  글로벌 아웃소싱 전문 FPT
글로벌 IT인프라 구축경험 & 노하우 합리적인 개발비용,IOT,빅데이터 프로젝트
www.fpt-software.kr/
  SJCU 컴퓨터소프트웨어학과
소프트웨어 개발자 양성을 위한 교과과정 개설
home.sjcu.ac.kr/
  MS PowerApps 교육
Microsoft PowerApps 전문 교육 센터. 사용자 및 개발자 교육 제공
www.dynamiclearning.co.kr
신청하기


안녕하세요 앱개발을 배우고있는 학생입니다. 제가 글을 올리는 이유는 진짜 너무 해결을 어떻게 해야할지 몰라서인데요..
OnClick을 하면 naming이라는 AlertDialog를 띄우고 그안에있는 버튼을 누르면
또 다른 seting이라는 AlertDialog가 뜨게 했고 그곳에 있는 확인버튼을 누르면  동적으로 체크박스가 뜹니다
문제는 처음 추가할때는 동척체크박스가 생성이 되는데 두번째 추가를 하면 앱이 중지됩니다.
제발 좀 방법좀 알려주세요

public class TypeSetting extends AppCompatActivity {
private static String settingname;
private static int cnt = 0;
private static String TAG = "phptest_MainActivity";

View dialogView;

EditText ed1,ed2,ed3,ed4,ed5,Cont;
RadioButton r1,r2;
Spinner sp1,sp2;
String edit1;
String edit2;
String edit3;
String edit4;
String edit5;
String Conts;
String j;
String n;
String radio;
String rename;
private String[] arr;

String acceptspinner[]={"pass","drop"};
String protocolspinner[]={"ICMP","TCP","UDP","HTTP","TLS"};

@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_type_setting);

LayoutInflater inflater=getLayoutInflater();
dialogView=inflater.inflate(R.layout.activity_settingadd,null);

ed1=(EditText)dialogView.findViewById(R.id.s_ip);
ed2=(EditText)dialogView.findViewById(R.id.s_port);
ed3=(EditText)dialogView.findViewById(R.id.d_ip);
ed4=(EditText)dialogView.findViewById(R.id.d_port);
ed5=(EditText)dialogView.findViewById(R.id.message);
r1=(RadioButton)dialogView.findViewById(R.id.r1);
r2=(RadioButton)dialogView.findViewById(R.id.r2);
Cont=(EditText)dialogView.findViewById(R.id.Contents);

arr = new String[10];

sp1=(Spinner)dialogView.findViewById(R.id.accept);
ArrayAdapter<String> ad1=new ArrayAdapter<String>
(this,android.R.layout.simple_spinner_item,acceptspinner);
ad1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
sp1.setAdapter(ad1);

sp2=(Spinner)dialogView.findViewById(R.id.protocol);
ArrayAdapter<String> ad2=new ArrayAdapter<String>
(this,android.R.layout.simple_spinner_item,protocolspinner);
ad2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
sp2.setAdapter(ad2);

}

public void RuleAdd_Clicked(View v)
{
final EditText Rule = new EditText(this);

AlertDialog.Builder naming = new AlertDialog.Builder(this);
naming.setTitle("룰 이름 설정");
naming.setView(Rule);
naming.setPositiveButton("확인", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialognaming, int i)
{
final LinearLayout lm = (LinearLayout) findViewById(R.id.amy);
final LinearLayout ll = new LinearLayout(TypeSetting.this);
final CheckBox btn=new CheckBox(TypeSetting.this)
;
settingname = Rule.getText().toString();

AlertDialog.Builder seting = new AlertDialog.Builder(TypeSetting.this);
seting.setTitle("룰 설정");
seting.setView(dialogView);
seting.setPositiveButton("확인", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialogseting, int v)
{
edit1=ed1.getText().toString();
edit2=ed2.getText().toString();
edit3=ed3.getText().toString();
edit4=ed4.getText().toString();
edit5=ed5.getText().toString();
j=sp1.getSelectedItem().toString();
n=sp2.getSelectedItem().toString();
radio="";
if(r1.isChecked())
radio="->";
else if(r2.isChecked())
radio="<>";
Conts=Cont.getText().toString();

btn.setText(settingname);
ll.setOrientation(LinearLayout.HORIZONTAL);
ll.addView(btn);
lm.addView(ll);
}
});
seting.show();
return;
}
});
naming.show();
return;
}




질문답변 게시판에서 궁금한 사항을 해결하셨다면, 애써 답변해주신 분께 잘 되었다고 따뜻한 댓글 한마디 남겨주세요.
그리고 답변해주신 분의 글을 '추천' 해주세요.
추천받으신 분에게 1포인트가, 추천하신 분에게도 1포인트가 적립됩니다. ^^

그다지 2017-10-25 (수) 10:50 추천추천 2 반대 0
final LinearLayout lm = (LinearLayout) findViewById(R.id.amy); 이건 차라리 외부에 선언해서 final 빼버리고

@Override
public void onClick(DialogInterface dialognaming, int i)
{
settingname = Rule.getText().toString();

AlertDialog.Builder seting = new AlertDialog.Builder(TypeSetting.this);
seting.setTitle("룰 설정");
seting.setView(dialogView);
seting.setPositiveButton("확인", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialogseting, int v)
{
			LinearLayout ll = new LinearLayout(TypeSetting.this);
                	CheckBox btn=new CheckBox(TypeSetting.this);

edit1=ed1.getText().toString();
edit2=ed2.getText().toString();
edit3=ed3.getText().toString();
edit4=ed4.getText().toString();
edit5=ed5.getText().toString();
j=sp1.getSelectedItem().toString();
n=sp2.getSelectedItem().toString();
radio="";
if(r1.isChecked())
radio="->";
else if(r2.isChecked())
radio="<>";
Conts=Cont.getText().toString();

btn.setText(settingname);
ll.setOrientation(LinearLayout.HORIZONTAL);
ll.addView(btn);
lm.addView(ll);
}
});
seting.show();
return;
}

차라리 이런식으로 짜는게 좋겠네요. 아마 동적 추가라는게 계속 추가 되야 한다는 거니까....
final로 설정하면 충분히 꼬일수 있으니
그다지 2017-10-24 (화) 17:57
소스 분석하기엔 너무 오래 걸리고 차라리 에러 로그를 올려주세요.
댓글주소 추천 0 반대 0
     
     
Tunning 2017-10-24 (화) 18:04
에러가 뜨진않고 그냥 앱 중지가 됩니다...ㅜㅜㅜ
댓글주소 추천 0 반대 0
          
          
Tunning 2017-10-24 (화) 18:23
딱오류날때 뜨는 로그입니다
10-24 18:17:11.861 4921-4921/com.example.yul.nsrl E/AndroidRuntime: FATAL EXCEPTION: main
                                                                    Process: com.example.yul.nsrl, PID: 4921
                                                                    java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
                                                                        at android.view.ViewGroup.addViewInner(ViewGroup.java:4656)
                                                                        at android.view.ViewGroup.addView(ViewGroup.java:4497)
                                                                        at android.view.ViewGroup.addView(ViewGroup.java:4469)
                                                                        at android.support.v7.app.AlertController.setupCustomContent(AlertController.java:647)
                                                                        at android.support.v7.app.AlertController.setupView(AlertController.java:463)
                                                                        at android.support.v7.app.AlertController.installContent(AlertController.java:226)
                                                                        at android.support.v7.app.AlertDialog.onCreate(AlertDialog.java:257)
                                                                        at android.app.Dialog.dispatchOnCreate(Dialog.java:642)
                                                                        at android.app.Dialog.show(Dialog.java:341)
                                                                        at android.support.v7.app.AlertDialog$Builder.show(AlertDialog.java:955)
                                                                        at com.example.yul.nsrl.TypeSetting$1.onClick(TypeSetting.java:143)
                                                                        at android.support.v7.app.AlertController$ButtonHandler.handleMessage(AlertController.java:161)
                                                                        at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                        at android.os.Looper.loop(Looper.java:154)
                                                                        at android.app.ActivityThread.main(ActivityThread.java:6682)
                                                                        at java.lang.reflect.Method.invoke(Native Method)
                                                                        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520)
                                                                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)
댓글주소 추천 0 반대 0
안사드 2017-10-24 (화) 18:59
The specified child already has a parent. You must call removeView() on the child's parent first.
이미 부모를 가지고 있다네요. 제거 안하고 사용해서 그런거 같고요.
at com.example.yul.nsrl.TypeSetting$1.onClick(TypeSetting.java:143)
143번째줄이 문제라네요.
댓글주소 추천 0 반대 0
     
     
Tunning 2017-10-25 (수) 09:40
거기는  seting.show()가 있는자리인데 무슨문제일까요...
댓글주소 추천 0 반대 0
OSKiller 2017-10-24 (화) 19:13
                final LinearLayout lm = (LinearLayout) findViewById(R.id.amy);
final LinearLayout ll = new LinearLayout(TypeSetting.this);
final CheckBox btn=new CheckBox(TypeSetting.this)

이걸 확인버튼의 onClick에 넣어보세요
댓글주소 추천 0 반대 0
     
     
Tunning 2017-10-25 (수) 09:40
읭... 똑같은 상황입니다..ㅜㅜ
댓글주소 추천 0 반대 0
그다지 2017-10-25 (수) 10:50
베플로 선택된 게시물입니다.
final LinearLayout lm = (LinearLayout) findViewById(R.id.amy); 이건 차라리 외부에 선언해서 final 빼버리고

@Override
public void onClick(DialogInterface dialognaming, int i)
{
settingname = Rule.getText().toString();

AlertDialog.Builder seting = new AlertDialog.Builder(TypeSetting.this);
seting.setTitle("룰 설정");
seting.setView(dialogView);
seting.setPositiveButton("확인", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialogseting, int v)
{
			LinearLayout ll = new LinearLayout(TypeSetting.this);
                	CheckBox btn=new CheckBox(TypeSetting.this);

edit1=ed1.getText().toString();
edit2=ed2.getText().toString();
edit3=ed3.getText().toString();
edit4=ed4.getText().toString();
edit5=ed5.getText().toString();
j=sp1.getSelectedItem().toString();
n=sp2.getSelectedItem().toString();
radio="";
if(r1.isChecked())
radio="->";
else if(r2.isChecked())
radio="<>";
Conts=Cont.getText().toString();

btn.setText(settingname);
ll.setOrientation(LinearLayout.HORIZONTAL);
ll.addView(btn);
lm.addView(ll);
}
});
seting.show();
return;
}

차라리 이런식으로 짜는게 좋겠네요. 아마 동적 추가라는게 계속 추가 되야 한다는 거니까....
final로 설정하면 충분히 꼬일수 있으니
댓글주소 추천 2 반대 0
     
     
OSKiller 2017-10-25 (수) 10:54
[@그다지]
내말이 이거였는뎁 ㅠㅠ
댓글주소 추천 0 반대 0
Tunning 2017-10-25 (수) 12:16
해도 로그에
  java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.기 뜨면서 똑같이 처음실행할때는 잘 되고 두번째 실행시 Dialog에서  CustomDialog로 넘어가지 않습니다 

댓글주소 추천 0 반대 0
이전글  다음글  목록 글쓰기

 


Copyright ⓒ www.androidside.com. All rights reserved.
채팅 권한: 글쓰기 1개
2레벨 이상만 대화 가능
공개 채팅: 평일 !(9시 ~ 17시),토,일
안사2 변경사항 보러가기 챗방이 잘 안보이면 크롬에서 접속해주세요
챗방 숨기기 |  챗방 보이기