Android - Problemas con Scrollview hijo

 
Vista:
sin imagen de perfil
Val: 40
Ha aumentado su posición en 2 puestos en Android (en relación al último mes)
Gráfica de Android

Problemas con Scrollview hijo

Publicado por Hector (35 intervenciones) el 04/04/2024 17:45:56
Muy buenas esperando que todos se encuentren muy bien en la comunidad, el problema que tengo ahora es que lo que pretendo hacer es que desde el primer fragment me limpie todos los fragment en total son cuatro, y cuando pruebo el primero va hacia el segundo este me bota hacia afuera de la app, el proceso es el siguiente, el usuario hace click en el botón limpiar del primer fragemt y este es el código:

private void Limpiardatos (){
limpiarDatos1 = true;
mano manoFragment = new mano();
Bundle args = new Bundle();
args.putBoolean("limpiarDatos1", limpiarDatos1);
manoFragment.setArguments(args);
// Envía el evento con EventBus
EventBus.getDefault().post(new LimpiarDatosEvent(limpiarDatos1));
FragmentManager fragmentManager = getParentFragmentManager();
FragmentTransaction transaction = fragmentManager.beginTransaction();
transaction.replace(R.id.segundo, manoFragment);
transaction.addToBackStack(null);
transaction.commit();
txtpresupuesto1.setText("");
txtnombre4.setText("");
txtrut4.setText("");
txtfecha1.setText("");
txtnombre5.setText("");
txtsiniestro.setText("");
txtnombre6.setText("");
txtfono4.setText("");
txttercero.setText("");
txtfonotercero.setText("");
txtmarca2.setText("");
txtmodelo1.setText("");
txtano.setText("");
txtpatente.setText("");
txtchasis.setText("");
a.setText("");
b.setText("");
c.setText("");
d.setText("");
e.setText("");
f.setText("");
tbldatos1.removeAllViews();
sppatente.setAdapter(null);
ArrayList<String> seleccion4 = new ArrayList<>();
seleccion4.add("Seleccione patente");
ArrayAdapter<CharSequence> adaptador4 = new ArrayAdapter (getActivity(), android.R.layout.simple_dropdown_item_1line, seleccion4);
sppatente.setAdapter(adaptador4);
spcompania.setAdapter(null);
ArrayList<String> seleccion = new ArrayList<>();
seleccion.add("Seleccione Cliente");
ArrayAdapter<CharSequence> adaptador = new ArrayAdapter (getActivity(), android.R.layout.simple_dropdown_item_1line, seleccion);
spcompania.setAdapter(adaptador);
spliquidador.setAdapter(null);
ArrayList<String> seleccion1 = new ArrayList<>();
seleccion1.add("Seleccione Liquidador");
ArrayAdapter<CharSequence> adaptador1 = new ArrayAdapter (getActivity(), android.R.layout.simple_dropdown_item_1line, seleccion1);
spliquidador.setAdapter(adaptador1);
spmarca.setAdapter(null);
ArrayList<String> seleccion2 = new ArrayList<>();
seleccion2.add("Seleccione Marca");
ArrayAdapter<CharSequence> adaptador2 = new ArrayAdapter (getActivity(), android.R.layout.simple_dropdown_item_1line, seleccion2);
spmarca.setAdapter(adaptador2);
spmodelo.setAdapter(null);
ArrayList<String> seleccion3 = new ArrayList<>();
seleccion3.add("Seleccione Modelo");
ArrayAdapter<CharSequence> adaptador3 = new ArrayAdapter (getActivity(), android.R.layout.simple_dropdown_item_1line, seleccion3);
spmodelo.setAdapter(adaptador3);
shouldLoadSpinner1 = false;
btn_modificar.setEnabled(false);
btn_eliminar.setEnabled(false);
btn_grabar.setEnabled(true);
llenarSpinner();
}

@Subscribe
public void onLimpiarDatosEvent(LimpiarDatosEvent event) {

}
prosiguiendo con el proceso, el siguiente paso es rescata la variable boleana de esta manera:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_mano, container, false);
Bundle args = getArguments();
if (args != null) {
boolean limpiarDatos1 = args.getBoolean("limpiarDatos1");
// Utiliza el valor de limpiarDatos1 según sea necesario
}
txtitem2 = view.findViewById(R.id.txtitem2);
String aa = "1";
y el resto del código, posteriormente se dirije al onresume:

@Override
public void onResume() {
super.onResume();
if (!consultaRealizada && tbldatos != null) { // && txtrepuesto3.getText() != null && !txtrepuesto3.getText().toString().isEmpty()) {
buscar1();
consultaRealizada = true;
}
EventBus.getDefault().register(this);
}

@Override
public void onPause() {
super.onPause();
EventBus.getDefault().unregister(this);
}
de ahí en adelante se realiza el proceso de limpiar el segundo fragment de esta manera:

@Subscribe
public void onLimpiarDatosEvent(LimpiarDatosEvent event) {
boolean limpiarDatos1 = event.isLimpiarDatos1();
if (limpiarDatos1) {
Toast.makeText(getActivity().getApplicationContext(), "Limpieza de datos", Toast.LENGTH_SHORT).show();
tbldatos.removeAllViews();
tbldatos1.removeAllViews();
cmdingresar.setEnabled(true);
cmdmodificar.setEnabled(false);
btn_eliminar1.setEnabled(false);
txtitem2.setText("1");
txtdetalle.setText("");
txtvalor.setText("");
txtvalor1.setText("");
spid1.setAdapter(null);
ArrayList<String> seleccion = new ArrayList<>();
seleccion.add("Seleccione Fila");
ArrayAdapter<CharSequence> adaptador = new ArrayAdapter (getActivity(), android.R.layout.simple_dropdown_item_1line, seleccion);
spid1.setAdapter(adaptador);
shouldLoadSpinner1 = false;
txtdetalle.requestFocus();
}
}

@Override
public void onDestroyView() {
super.onDestroyView();
// Desregistrar este fragmento de EventBus cuando se destruya la vista
EventBus.getDefault().unregister(this);
}
todo bien hasta aqui una vez terminado el proceso de limpiar el segundo Fragment este me tira hacia afuera y este es el error:

Process: com.example.gestion, PID: 10165
java.lang.IllegalStateException: ScrollView can host only one direct child
at android.widget.ScrollView.addView(ScrollView.java:598)
at androidx.fragment.app.FragmentStateManager.addViewToContainer(FragmentStateManager.java:881)
at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:565)
at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:272)
at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1943)
at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1839)
at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1782)
at androidx.fragment.app.FragmentManager$5.run(FragmentManager.java:565)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:226)
at android.os.Looper.loop(Looper.java:313)
at android.app.ActivityThread.main(ActivityThread.java:8669)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:571)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1135)
I/Process: Sending signal. PID: 10165 SIG: 9
Disconnected from the target VM, address: 'localhost:60863', transport: 'socket'
por lo cual me puse a investigar y me decian que debe haber un solo scrollview por lo cual elimine el que tenia en el tabledlayout y quedo de esta manera el xml del segundo fragment:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/segundo"
android:tag="@+id/segundo"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:padding="1dp"
android:background="@drawable/fondo"
tools:context=".archivos.mano">

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/hijo"
android:orientation="vertical">

<Button
android:id="@+id/btn_buscar1"
android:layout_width="match_parent"
android:layout_height="48dp"
android:background="#00FFFFFF"
android:text="@string/busqueda7"
android:textColor="@android:color/background_dark"
android:textColorHint="@color/black"
android:textSize="18sp" />

<Button
android:id="@+id/btn_eliminar1"
android:layout_width="match_parent"
android:layout_height="40dp"
android:background="@drawable/boton_redondo1"
android:text="@string/botoneliminar"
android:textColor="#99DC2B0C"
android:textColorHint="@color/black"
android:textSize="18sp"
tools:ignore="TouchTargetSizeCheck" />

<Button
android:id="@+id/btn_limpiar1"
android:layout_width="match_parent"
android:layout_height="48dp"
android:background="#00FFFFFF"
android:text="@string/botonlimpiar"
android:textColor="@android:color/background_dark"
android:textColorHint="@color/black"
android:textSize="18sp" />

<com.google.android.material.textfield.TextInputLayout
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@color/purple_200"
android:textColorHint="@color/purple_500"
app:boxBackgroundMode="outline"
app:boxCornerRadiusTopEnd="10dp"
app:boxCornerRadiusTopStart="10dp">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/txtitem2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:enabled="false"
android:hint="@string/item"
android:inputType="number"
android:textSize="18sp" />
</com.google.android.material.textfield.TextInputLayout>

<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@color/purple_200"
android:textColorHint="@color/purple_500"
app:boxBackgroundMode="outline"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
app:boxCornerRadiusTopEnd="10dp"
app:boxCornerRadiusTopStart="10dp"
app:counterEnabled="true"
app:counterMaxLength="80"
app:endIconMode="clear_text">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/txtdetalle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:hint="@string/detalle"
android:inputType="textPersonName"
android:textSize="18sp" />
</com.google.android.material.textfield.TextInputLayout>

<com.google.android.material.textfield.TextInputLayout
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@color/purple_200"
android:textColorHint="@color/purple_500"
app:boxBackgroundMode="outline"
app:boxCornerRadiusTopEnd="10dp"
app:boxCornerRadiusTopStart="10dp"
app:endIconMode="clear_text">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/txtvalor"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:imeOptions="actionNext"
android:gravity="center"
android:hint="@string/valor"
android:inputType="number"
android:textSize="18sp" />
</com.google.android.material.textfield.TextInputLayout>

<Button
android:id="@+id/cmdingresar"
android:layout_width="match_parent"
android:layout_height="40dp"
android:background="@drawable/boton_redondo"
android:text="@string/botoningresar"
android:textColor="@android:color/background_dark"
android:textColorHint="@color/black"
android:textSize="18sp"
tools:ignore="TouchTargetSizeCheck" />

<Button
android:id="@+id/cmdsuma"
android:layout_width="match_parent"
android:layout_height="40dp"
android:background="@drawable/boton_redondo"
android:text="@string/suma"
android:textColor="@android:color/background_dark"
android:textColorHint="@color/black"
android:textSize="18sp"
tools:ignore="TouchTargetSizeCheck" />

<Button
android:id="@+id/cmdmodificar"
android:layout_width="match_parent"
android:layout_height="40dp"
android:background="@drawable/boton_redondo"
android:text="@string/botonmodificar1"
android:textColor="@android:color/background_dark"
android:textColorHint="@color/black"
android:textSize="18sp"
tools:ignore="TouchTargetSizeCheck" />

<com.google.android.material.textfield.TextInputLayout
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@color/purple_200"
android:textColorHint="@color/purple_500"
app:boxBackgroundMode="outline"
app:boxCornerRadiusTopEnd="10dp"
app:boxCornerRadiusTopStart="10dp">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/txtvalor1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:imeOptions="actionNext"
android:gravity="center"
android:enabled="false"
android:hint="@string/valor1"
android:inputType="number"
android:textSize="18sp" />
</com.google.android.material.textfield.TextInputLayout>

<Spinner
android:id="@+id/spid1"
android:layout_width="match_parent"
android:layout_height="48dp"
android:textSize="18sp"
tools:ignore="SpeakableTextPresentCheck" />

<TableLayout
android:id="@+id/tbldatos"
android:layout_width="match_parent"
android:layout_height="wrap_content" />

<TableLayout
android:id="@+id/tbldatos1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="invisible" />

<EditText
android:id="@+id/txtid"
android:layout_width="match_parent"
android:layout_height="1dp"
android:ems="10"
android:inputType="textPersonName"
android:visibility="invisible" />

<EditText
android:id="@+id/g"
android:layout_width="match_parent"
android:layout_height="1dp"
android:ems="10"
android:inputType="textPersonName"
android:visibility="invisible" />

<EditText
android:id="@+id/h"
android:layout_width="match_parent"
android:layout_height="1dp"
android:ems="10"
android:inputType="textPersonName"
android:visibility="invisible" />
</LinearLayout>
</ScrollView>
si se dan cuenta no hay mas hijos posible de lo mismo solo un linearlayout y solo un scrollview, pero siempre este error y no puedo salir de esto, favor de ayudarme que se puede hacer para solucionar este problema, si necesitan algo mas me lo hacen saber y desde ya muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder