2014-11-21 39 views
-1

我在打开微调器时遇到了问题。当我第一次打开它时,它会正确打开并让我从中选择。然后,当我尝试打开它第二次它给了我一个错误:您必须先调用父级的removeview。 Android

11-21 18:43:49.589: E/AndroidRuntime(3178): java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first. 

我的微调上点击的ImageButton打开。这里代码:

final ArrayAdapter<String> adp = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, s); 
    final Spinner sp = new Spinner(this); 
    final AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    ImageButton bracket = (ImageButton) findViewById(R.id.imageButton1); 
    bracket.setOnClickListener(new OnClickListener() { 
     public void onClick(View arg0) { 
      sp.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
       public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) { 
        choosed_bracket = (String) sp.getItemAtPosition(i); 
       } 

       public void onNothingSelected(AdapterView<?> adapterView) { 
        return; 
       } 
      }); 
      sp.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 
      sp.setAdapter(adp); 

      builder.setTitle("Choose war bracket:"); 
      builder.setView(sp); 
      builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int which) { 
        /*SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 
        SharedPreferences.Editor editor = settings.edit(); 
        editor.putString("bracket", choosed_bracket); 
        editor.commit(); */ 
        Toast.makeText(getApplicationContext(), "Choosed bracket is: " + choosed_bracket, Toast.LENGTH_LONG).show(); 
       } 
      }); 
      builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int which) { 
        dialog.cancel(); 
       } 
      }); 
      builder.create().show(); 
     } 
    }); 

希望你能帮助我!

回答

1

您是否试图在onclick事件中实例化您的构建器而不是外部?

ImageButton bracket = (ImageButton) findViewById(R.id.imageButton1); 
    bracket.setOnClickListener(new OnClickListener() { 
     public void onClick(View arg0) { 
      ArrayAdapter<String> adp = new ArrayAdapter<String>(arg0.getContext(), android.R.layout.simple_spinner_item, s); 
      Spinner sp = new Spinner(arg0.getContext()); 
      AlertDialog.Builder builder = new AlertDialog.Builder(arg0.getContext()); 
      sp.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
       public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) { 
        choosed_bracket = (String) sp.getItemAtPosition(i); 
       } 

       public void onNothingSelected(AdapterView<?> adapterView) { 
        return; 
       } 
      }); 
      sp.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 
      sp.setAdapter(adp); 

      builder.setTitle("Choose war bracket:"); 
      builder.setView(sp); 
      builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int which) { 
        /*SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 
        SharedPreferences.Editor editor = settings.edit(); 
        editor.putString("bracket", choosed_bracket); 
        editor.commit(); */ 
        Toast.makeText(getApplicationContext(), "Choosed bracket is: " + choosed_bracket, Toast.LENGTH_LONG).show(); 
       } 
      }); 
+0

woohoo!非常感谢你!有效! – user1671523 2014-11-21 16:30:56

相关问题