2014-09-27 1 views
2

제목에서 말했듯이 사용자 상호 작용을 보여주는 두 개의 경고 대화 상자가 있습니다. 설정, 크레디트, 프로모 코드 및 종료 중 하나를 선택할 수있는 4 가지 옵션이있는 메뉴가 있지만 프로모 코드를 클릭하면 질문에서 언급 한 오류가 발생합니다.Logcat에 "지정된 하위 항목에 이미 상위 항목이 있습니다. 내 두 번째 알림 대화 상자에서 removeView()를 먼저 호출해야합니다. "

switch ((int) mMergeAdapter.getItemId(position)) { 
        case 0: 
         Intent intent2 = new Intent(Browser.this, 
           SettingsActivity.class); 
         startActivity(intent2); 
         break; 
        case 1: 
         AlertDialog.Builder builder = new AlertDialog.Builder(Browser.this); 
         builder.setTitle("Credits"); 
         builder.setMessage("Code\n\nTraabefi\n\nDesign\n\nSamuel 'Samael' Chmura"); 
         builder.setIcon(R.drawable.holo_dark_action_info); 
         builder.setPositiveButton("OK", null); 
         AlertDialog dialog = builder.create(); 
         dialog.show(); 
         TextView txt = (TextView)dialog.findViewById(android.R.id.message); 
         txt.setGravity(Gravity.CENTER); 
         break; 
        case 2: 
         AlertDialog.Builder alert = new AlertDialog.Builder(Browser.this); 
         alert.setTitle("Enter your promocode."); 
         final EditText input = (EditText) findViewById(android.R.id.edit); 
         alert.setView(input); 
         alert.setPositiveButton("OK", new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int whichButton) { 
         if (input.getText().toString()=="abcd"){ 
           isPremium = true; 
         } 
         else { 
           isPremium = false; 
         }}}); 
         alert.show(); 
         break; 
        case 3: 
         finish(); 
       } 
+0

귀하의 logcat을 게시하십시오. 어떤 줄에서 오류가 발생합니까? 이 오류는 이미 추가 된 상위에 하위를 추가 할 때 발생합니다. –

+0

무슨 의미인지는 알지만 오류로 인해 "alert.show(); – Trabefi

답변

3

오류를 일으키는 라인은 다음과 같습니다 :

final EditText input = (EditText) findViewById(android.R.id.edit); 
alert.setView(input); 

android.R.id.edit이 조각의 일부이며, 오류 상태로,이 뷰가 이미 부모가이 내 코드입니다. 문제를 해결하기 위해 xml을 정의하고, 인플레이터를 사용하여 뷰 객체를 검색하고 setView를 호출하여이 객체를 매개 변수로 제공 할 수 있습니다.

편집 :

는 고해상도/레이아웃 폴더에 XML 파일을 만듭니다. 내용

<?xml version="1.0" encoding="utf-8"?> 
    <EditText xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/myid" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" /> 

으로, my_edit_text.xml 그것을 호출하고 남자 blackbelt 오류가 당신이 뭔가를 사용하려고한다는 사실에 말했듯이

final View view = LayoutInflater.from(this).inflate(R.layout.my_edit_text, null); 
alert.setView(view); 
final EditText input = (EditText) view.findViewById(R.id.myid); 
+0

과 내 실수를 어떻게 수정합니까? – Trabefi

+0

어떤 의미입니까? – Blackbelt

+0

코드를 게시 할 수 있습니까? 초보자 – Trabefi

1

final EditText input = (EditText) findViewById(android.R.id.edit); 
alert.setView(input); 

을 대체하는 조각에 속합니다. android.R.id.edit 대신 자신의 것을 사용하십시오. 여기를보세요 :
Custom Dialog

관련 문제