Iniciar un fragmento a través de Intent dentro de un fragmento
Quiero lanzar un nuevo fragmento para ver algunos datos. Actualmente, tengo una actividad principal que tiene un montón de pestañas de barra de acciones, cada una de las cuales es un fragmento. Por lo tanto, dentro de un fragmento de pestaña, tengo un botón, chartsButton. Tengo mi onclicklistener conjunto para él, y aquí está el método onClick:
public OnClickListener chartsListener = new OnClickListener() { @Override public void onClick(View v) { Intent chartFragment = new Intent(); startActivity(chartFragment); } };
Ahora, como he dicho, este oyente está dentro de una clase que extiende Fragmento. Por lo tanto, quiero lanzar un nuevo fragmento (chartsFragment) a través de la intención de reemplazar toda la pantalla. Cuando el usuario hace clic de nuevo, los volverá a las pestañas ya la actividad principal. Aquí está mi fragmento de gráfico:
- Comprobación de la configuración de Acceso a la notificación de seguridad del sistema de Android mediante programación
- Compartir la imagen estática de google map a través de la aplicación android
- Android ¿Intención de seguir al usuario de Twitter?
- Cómo leer programaticamente las intenciones de manifiesto?
- ¿Puede la intención recibida por un BroadcastReceiver ser nula?
public class chartsFragment extends Fragment { public View onCreateView() { //LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState LayoutInflater inflater = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE); return (inflater.inflate(R.layout.chartfragment, null)); } }
El error actual con el que estoy tratando: "android.content.ActivityNotFoundException: No hay actividad para manejar Intent {}". Eso está bien, entiendo que podría usar getActivity (). StartActivity (chartsFragment), pero que da como resultado el mismo error. Supongo que lo que estoy buscando aquí, es cómo iniciar una intención dentro de un fragmento que resulta en la apertura de un nuevo fragmento?
- Cómo iniciar la aplicación de calendario de Android con Intent (Froyo)
- Android-calling Intent de una clase interna
- El niño especificado ya tiene un padre. Debe llamar a removeView () en el padre del niño primero
- Integración de ZbarScanner con la aplicación Android
- Diferencia entre las preferencias compartidas y los proveedores de contenido en android
- Tratando de adjuntar un archivo de la tarjeta SD al correo electrónico
- OnNewIntent () y los oyentes registrados
- TransactionTooLargeException al iniciar nueva Actividad
No puedes abrir nuevos fragmentos. Los fragmentos deben estar siempre alojados en una actividad. Si el fragmento está en la misma actividad (por ejemplo, pestañas), a continuación, la navegación de la tecla de regreso va a ser complicado estoy asumiendo que desea abrir una nueva pantalla con ese fragmento.
Así que simplemente crearía una nueva actividad y pondría el nuevo fragmento allí. Esa actividad reaccionaría entonces a la intención explícitamente a través de la clase de actividad o implícitamente a través del intent filter
.
La respuesta a su problema es fácil: reemplace el Fragment
actual con el nuevo Fragment
y presione la transacción en el backstack. Esto conserva el comportamiento del botón …
Crear una nueva Activity
realmente derrota todo el propósito de usar fragmentos de todos modos … muy contra productivo.
@Override public void onClick(View v) { // Create new fragment and transaction Fragment newFragment = new chartsFragment(); // consider using Java coding conventions (upper first char class names!!!) FragmentTransaction transaction = getFragmentManager().beginTransaction(); // Replace whatever is in the fragment_container view with this fragment, // and add the transaction to the back stack transaction.replace(R.id.fragment_container, newFragment); transaction.addToBackStack(null); // Commit the transaction transaction.commit(); }
http://developer.android.com/guide/components/fragments.html#Transactions
Pruebe esto puede ayudarle:
public void ButtonClick(View view) { Fragment mFragment = new YourNextFragment(); getSupportFragmentManager().beginTransaction().replace(R.id.content_frame, mFragment).commit(); }
Pruebe esto puede ayudarle:
private void changeFragment(Fragment targetFragment){ getSupportFragmentManager() .beginTransaction() .replace(R.id.main_fragment, targetFragment, "fragment") .setTransitionStyle(FragmentTransaction.TRANSIT_FRAGMENT_FADE) .commit(); }
- Detectando la llamada saliente y el evento de hangup de llamada en android
- ¿Cómo puedo obtener el divisor predeterminado?