studio sirve samsung que programar para instalar descargar celular aplicacion java android

java - sirve - El hijo especificado ya tiene un padre. Debe llamar a removeView() en el padre del niƱo primero



para que sirve java en android (3)

Debe colocar el código que llama al constructor de diálogo dentro del método de devolución de llamada onCreateDialog(int) lugar de onCreate(Bundle) . En su código, el diálogo se inicializa implícitamente cuando llama a dlgName.show() . Como resultado, cuando llama al diálogo por segunda vez, así sucede con el constructor del diálogo.

Tengo una clase para crear el diálogo y la codificación para obtener los valores de él. funciona bien para uno. y cuando intento llamar al diálogo por segunda vez, pasa el siguiente mensaje de error.

: java.lang.IllegalStateException: el hijo especificado ya tiene un padre. Debe llamar removeView () en el padre del niño primero.

¿Puedes decirme cómo eliminar removeView ()?

Aquí está el código para la clase;

package com.util; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; import android.widget.EditText; /** * helper for Prompt-Dialog creation */ public abstract class PromptDialog extends AlertDialog.Builder implements OnClickListener { private final EditText input; /** * @param context * @param title resource id * @param message resource id */ public PromptDialog(Context context, int title, int message) { super(context); setTitle(title); //:TODO Display msg only if not empty //setMessage(message); input = new EditText(context); setView(input); setPositiveButton("ok", this); setNegativeButton("cancel", this); } /** * will be called when "cancel" pressed. * closes the dialog. * can be overridden. * @param dialog */ public void onCancelClicked(DialogInterface dialog) { dialog.dismiss(); } @Override public void onClick(DialogInterface dialog, int which) { if (which == DialogInterface.BUTTON_POSITIVE) { if (onOkClicked(input.getText().toString())) { dialog.dismiss(); } } else { onCancelClicked(dialog); } } /** * called when "ok" pressed. * @param input * @return true, if the dialog should be closed. false, if not. */ abstract public boolean onOkClicked(String input); }

y aquí está el código que llamo la instancia de la clase;

@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); final PromptDialog dlgName = new PromptDialog(this, R.string.enterName, R.string.enter_comment) { @Override public boolean onOkClicked(String input) { // do something mName = input; save(); //end do some thing return true; // true = close dialog } }; mTxtShiftName = (TextView) findViewById(R.id.shiftname); mTxtShiftName.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { dlgName.show(); } });


Mira esto:

http://developer.android.com/reference/android/view/LayoutInflater.html#inflate(int,android.view.ViewGroup,boolean)

Específicamente, el argumento booleano y el valor de retorno en el método inflado de LayoutInflator:

Devuelve la vista raíz de la jerarquía inflada. Si se proporcionó root y attachToRoot es verdadero, esto es root; De lo contrario, es la raíz del archivo XML inflado.

View dialogView = inflater.inflate(R.layout.brush_opts_dialog, rootView, false);

Desea hacer que la raíz de la vista inflada sea la vista creada en lugar de "esto", que sería el fragmento completo dentro de una actividad.


Recibí este error al llamar al método de inflado incorrecto en la llamada onCreateView () de mi fragmento.

Lo arreglé cambiando de esto:

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_saves, container); }

A esto:

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_saves, container, false); }