El problema es que cuando cargo un fragment por primera vez, sea cual sea(Pulsando en el listView lateral), lo hace perfecto, pero luego al intentar cargar otro Fragment por segunda vez no puedo hacerlo, ya que el listView al darle click a otra opción este se vuelve a ocultar, y no puedo hacer el click para mostrar mi otro Fragment
Este es mi código del MainActivity:
Código
package com.funcioneslineales2.funcioneslineales2; import android.app.FragmentManager; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentTransaction; import android.support.v4.view.GravityCompat; import android.support.v4.widget.DrawerLayout; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.Toast; public class MainActivity extends AppCompatActivity { ListView listView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); DrawerLayout drawer = (DrawerLayout) findViewById(R.id.asd); drawer.closeDrawer(GravityCompat.START); String[] opciones = {"Pendiente y ordenada", "Ecuación punto pendiente", "Pasa por (x1,y1) y (x2,y2)"}; ArrayAdapter<String> adapterListView = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, opciones); listView.setAdapter(adapterListView); listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override if(position == 0) { setFragment(0); } if(position == 1) { setFragment(1); } if(position == 2) { setFragment(1); } } }); } public void setFragment(int position) { android.support.v4.app.FragmentManager fragmentManager; FragmentTransaction fragmentTransaction; switch (position) { case 0: fragmentManager = getSupportFragmentManager(); fragmentTransaction = fragmentManager.beginTransaction(); FuncionLinealPendienteOrdenada funcionLinealPendienteOrdenada = new FuncionLinealPendienteOrdenada(); fragmentTransaction.replace(R.id.asd, funcionLinealPendienteOrdenada); fragmentTransaction.commit(); break; case 1: fragmentManager = getSupportFragmentManager(); fragmentTransaction = fragmentManager.beginTransaction(); FuncionLinealPendiente1Punto funcionLinealPendiente1Punto = new FuncionLinealPendiente1Punto(); fragmentTransaction.replace(R.id.asd, funcionLinealPendiente1Punto); fragmentTransaction.commit(); break; } } }
Y este es el Layout del MainActivity:
Código
<?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.funcioneslineales2.funcioneslineales2.MainActivity" android:id="@+id/asd"> <include android:layout_width="wrap_content" android:layout_height="wrap_content" layout="@layout/drawer_layout" android:layout_gravity="start"/> </android.support.v4.widget.DrawerLayout>
Layout cabezera:
Código
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#92ea17"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/imageView" android:layout_alignParentTop="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:src="@android:drawable/sym_def_app_icon" android:padding="20dp"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceLarge" android:text="Funciones lineales" android:id="@+id/textView" android:layout_centerVertical="true" android:layout_toRightOf="@+id/imageView" android:layout_toEndOf="@+id/imageView" android:textStyle="bold" android:layout_marginLeft="10dp" /> </RelativeLayout>
Layout del ListView:
Código
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <ListView android:layout_width="wrap_content" android:layout_height="match_parent" android:id="@+id/listView" android:layout_alignParentTop="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" /> </RelativeLayout>
Y el layout DrawerLayout(Donde uno la cabezera y el listview):
Código
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#cfc4c4"> <include android:layout_width="match_parent" android:layout_height="wrap_content" layout="@layout/cabezera" android:layout_alignParentTop="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:id="@+id/include" /> <include android:layout_width="wrap_content" android:layout_height="wrap_content" layout="@layout/lista_drawer" android:layout_below="@+id/include" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" /> </RelativeLayout>
Y las clases de los fragments:
Código
import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v7.app.AlertDialog; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.EditText; import java.util.zip.Inflater; /** * A simple {@link Fragment} subclass. */ public class FuncionLinealPendienteOrdenada extends Fragment { EditText etPendiente, etOrdenadaAlOrigen; Button btnCalcular; public FuncionLinealPendienteOrdenada() { // Required empty public constructor } @Override Bundle savedInstanceState) { // Inflate the layout for this fragment View view = inflater.inflate(R.layout.fragment_funcion_lineal_pendiente_ordenada, container, false); etPendiente = (EditText)view.findViewById(R.id.editText); etOrdenadaAlOrigen = (EditText)view.findViewById(R.id.editText2); @Override calcularPuntos(); } }); return view; } public void calcularPuntos() { AlertDialog.Builder builder = new AlertDialog.Builder(getContext()); builder.setTitle("Resultado"); builder.setPositiveButton("OK",null); builder.create(); builder.show(); } }
Código
import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v7.app.AlertDialog; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.EditText; /** * A simple {@link Fragment} subclass. */ public class FuncionLinealPendiente1Punto extends Fragment { EditText etPendiente, x1, y1; Button btnCalcular; public FuncionLinealPendiente1Punto() { // Required empty public constructor } @Override Bundle savedInstanceState) { // Inflate the layout for this fragment etPendiente = (EditText)view.findViewById(R.id.editText3); x1 = (EditText)view.findViewById(R.id.editText4); y1 = (EditText)view.findViewById(R.id.editText5); @Override calcularPuntos(); } }); return view; } public void calcularPuntos() { AlertDialog.Builder builder = new AlertDialog.Builder(getContext()); builder.setTitle("Resultado"); builder.setPositiveButton("OK",null); builder.create(); builder.show(); } }
Gracias de antemano.