2015-01-31 108 views
-1

我試圖繼續創建我的應用程序(當您單擊添加按鈕時創建一個名稱列表)。但我有這個例外,我沒有成功地將其刪除; 這是我的代碼:錯誤:指定的孩子已經有父母

mageButton addButton = null; 
RelativeLayout menuactivitylayout=null; 

int j=0; 



@Override 
protected void onCreate(final Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_menu); 
    final LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
      LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); 
    menuactivitylayout=(RelativeLayout)findViewById(R.id.Relativelayoutacitivtymenu); 


    addButton = (ImageButton) findViewById(R.id.buttonaddplayer); 
    addButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      // Create custom dialog object 
      final Dialog dialog = new Dialog(MenuActivity.this); 
      dialog.setTitle(getResources().getString(R.string.addperson)); 
      // Include dialog.xml file 
      dialog.setContentView(R.layout.dialoglayout); 
      // Set dialog title 
      // dialog.setTitle("Custom Dialog"); 

      // set values for custom dialog components - text, image and button 
      final EditText text = (EditText) dialog.findViewById(R.id.editTextdialog); 


      dialog.show(); 

      final ImageButton validButton = (ImageButton) dialog.findViewById(R.id.imageButtonvalid); 
      // if decline button is clicked, close the custom dialog 
      validButton.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        final LinearLayout ll = new LinearLayout(MenuActivity.this); 
        ll.setOrientation(LinearLayout.HORIZONTAL); 

        ImageView person = new ImageView(MenuActivity.this); 
        person.setImageDrawable(getResources().getDrawable(R.drawable.person)); 
        person.setMaxHeight(50); 
        person.setMaxWidth(50); 
        ll.addView(person); 


        final TextView name = new TextView(MenuActivity.this); 
        name.setText(text.getText().toString()); 
        ll.addView(name); 

        final ImageButton edit = new ImageButton(MenuActivity.this); 
        edit.setId(j+1); 
        edit.setImageDrawable(getResources().getDrawable(R.drawable.edit)); 
        edit.setLayoutParams(params); 
        j++; 
        edit.setOnClickListener(new View.OnClickListener() { 
         @Override 
         public void onClick(View v) { 
          final Dialog editDialog = new Dialog(MenuActivity.this); 
          editDialog.setTitle("Editer"); 
          dialog.setContentView(R.layout.edtidialoglayout); 
          final EditText edititextdialog = (EditText) dialog.findViewById(R.id.editTexteditDialog); 


          dialog.show(); 

          ImageButton validButton = (ImageButton) dialog.findViewById(R.id.imageButtonvalideditdialog); 
          validButton.setOnClickListener(new View.OnClickListener() { 
           @Override 
           public void onClick(View v) { 
            name.setText(edititextdialog.getText().toString()); 
            dialog.dismiss(); 

           } 
          }); 


         } 





        }); 

        ll.addView(validButton); 

        menuactivitylayout.addView(ll); 
        dialog.dismiss(); 

       } 
      }); 

這是logcat的

01-31 22:33:49.587 20692-20692/com.example.guillaume.drinkwithfriends E/AndroidRuntime﹕ FATAL EXCEPTION: main 
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:3439) 
     at android.view.ViewGroup.addView(ViewGroup.java:3310) 
     at android.view.ViewGroup.addView(ViewGroup.java:3255) 
     at android.view.ViewGroup.addView(ViewGroup.java:3231) 
     at com.example.guillaume.drinkwithfriends.MenuActivity$1$1.onClick(MenuActivity.java:107) 
     at android.view.View.performClick(View.java:4162) 
     at android.view.View$PerformClick.run(View.java:17082) 
     at android.os.Handler.handleCallback(Handler.java:615) 
     at android.os.Handler.dispatchMessage(Handler.java:92) 
     at android.os.Looper.loop(Looper.java:137) 
     at android.app.ActivityThread.main(ActivityThread.java:4867) 
     at java.lang.reflect.Method.invokeNative(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:511) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1007) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:774) 
     at dalvik.system.NativeStart.main(Native Method) 

我已經認識到LL對父母的對話,但我不去除它贏得成功!

我都知道,使用一個ListView與吹氣和適配器會更好,但我是一個初學者,我真的不明白什麼是「吹氣」和「適配器」 ..

謝謝非常多

+0

請添加logcat跟蹤。 – Rohit5k2 2015-01-31 21:45:26

+0

我剛加了:) – guillaumegg10 2015-01-31 21:49:33

+0

請看我的回答。爲什麼要在佈局中添加對話框中的按鈕?屬於對話框。你不能這樣做。如果你想添加按鈕,你需要創建一個新的。 – Rohit5k2 2015-01-31 21:53:01

回答

0

這是必須導致問題的線。

ll.addView(validButton); 

您不能添加validButton佈局,因爲它已經在該對話框中,這意味着它有一個父。

刪除此行,看看它是否工作。

+0

就是這樣!我寫了錯誤的按鈕!非常感謝你 ! – guillaumegg10 2015-01-31 22:06:05

+0

很高興能幫到你。請不要忘記接受它作爲您的答案......:D – Rohit5k2 2015-01-31 22:06:56

相關問題