Estoy desarrollando una app en la que hay dos fragmenttabs.al presionar las pestañas correspondientes fragmentos aparecerá.que funciona bien.pero lo que yo quiero una actividad dentro de la fragmenttabs. Yo estoy usando el ABS de la biblioteca para este.

ActionBar bar = getSupportActionBar();
        bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
        ActionBar.Tab tab1 = bar.newTab();
        ActionBar.Tab tab2 = bar.newTab();
tab1.setText("Fragment A");
        tab2.setText("Fragment B");
tab1.setTabListener(new MyTabListener<FragmentA>(this, "tab1",
                FragmentA.class, null));
        tab2.setTabListener(new MyTabListener<FragmentB>(this, "tab1",
                FragmentB.class, null));
        }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case android.R.id.home:
            //app icon in action bar clicked; go Location selection
            Intent intent = new Intent(FragmentDemoActivity.this,
                    TestActivity.class);
             intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
             startActivity(intent);
             return true;
        default:
            return super.onOptionsItemSelected(item);
        }
    }

    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putInt("tab", getSupportActionBar()
                .getSelectedNavigationIndex());
    }

listnerclass es

public class MyTabListener<T extends Fragment> implements ActionBar.TabListener {
private final FragmentActivity mActivity;
private final String mTag;
private final Class<T> mClass;
private final Bundle mArgs;
private Fragment mFragment;
public MyTabListener(FragmentActivity activity, String tag, Class<T> clz,
Bundle args) {
mActivity = activity;
mTag = tag;
mClass = clz;
mArgs = args;
FragmentTransaction ft = mActivity.getSupportFragmentManager()
.beginTransaction();
mFragment = mActivity.getSupportFragmentManager().findFragmentByTag(
mTag);
if (mFragment != null && !mFragment.isDetached()) {
ft.detach(mFragment);
}
}
@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
ft = mActivity.getSupportFragmentManager().beginTransaction();
if (mFragment == null) {
mFragment = Fragment
.instantiate(mActivity, mClass.getName(), mArgs);
ft.add(android.R.id.content, mFragment, mTag);
ft.commit();
} else {
ft.attach(mFragment);
ft.commit();
}
}
@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
ft = mActivity.getSupportFragmentManager().beginTransaction();
if (mFragment != null) {
ft.detach(mFragment);
ft.commitAllowingStateLoss();
}
}
@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
//TODO Auto-generated method stub
}

Fragmentclass

public class FragmentB extends Fragment {
Button button;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup group, Bundle saved)
{
return inflater.inflate(R.layout.frag_b, group, false);
}
@Override
public void onActivityCreated (Bundle savedInstanceState)
{
super.onActivityCreated(savedInstanceState);
button = (Button) getActivity().findViewById(R.id.button2);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle("Fragment B");
builder.setMessage("What would you like to do?");
builder.setPositiveButton("Nothing", null);
builder.setNegativeButton("Leave me alone!", null);
builder.show();
}
});
}
}

yo wnt incluir la siguiente actividad en la fragmentB

public class TestActivity extends Activity {
Button b1, b2;
TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
//TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.testactivity);
b1 = (Button) findViewById(R.id.button1);
b2 = (Button) findViewById(R.id.button2);
tv = (TextView) findViewById(R.id.textView1);
b1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
tv.setText("You Clicked on Button 1");
}
});
b2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
tv.setText("You Clicked on Button 2");
}
});
}
}

Tengo mucha creado actividades para incluir en el fragmento..sus onu imaginable para recrear en onActivityCreated de un fragmento de la clase. de acuerdo a esto tengo que modificar mi principal de la aplicación.

  • Puede ejecutar una actividad dentro de un fragmento. En el mejor de los casos, puede tener un fragmento dentro de un fragmento.
InformationsquelleAutor Noufal | 2014-01-31

3 Comentarios

  1. 1

    Puede ejecutar una actividad dentro de un fragmento. En el mejor de los casos, puede tener un fragmento dentro de un fragmento.
    así que la mejor cosa que usted puede hacer en esta situación es en lugar de crear un Activity puede crear un Fragment y agregar dentro de su FragmentB.

  2. 0

    Como Faheem Dijo»
    Un Fragmento no puede anfitrión de una actividad. Lugar de la actividad, se puede utilizar Anidada Fragmento de»

    Fragmentos son como las Actividades si usted lee la documentación.Cambiar de actividad para el Fragmento es fácil

    Esto es lo que desarrollador.android dice

    Para crear un fragmento, debe crear una subclase de Fragmento (o una subclase de ella). El Fragmento de la clase tiene el código que se parece mucho a una Actividad. Contiene métodos de devolución de llamada similar a la de una actividad, tales como onCreate(), onStart(), onPause(), y onStop(). De hecho, si usted es la conversión de una ya existente de la aplicación de Android para utilizar fragmentos, usted puede simplemente mover el código a partir de la actividad de métodos de devolución de llamada en los respectivos métodos de devolución de llamada de su fragmento.

    Generalmente, usted debe implementar al menos los siguientes métodos del ciclo de vida:

    onCreate()
    El sistema llama a esta hora de crear el fragmento. Dentro de su aplicación, se deben inicializar los componentes esenciales del fragmento que se desea conservar cuando el fragmento está en pausa o se detiene, a continuación se reanuda.

    onCreateView()
    El sistema llama a este cuando es hora de que el fragmento para dibujar la interfaz de usuario por primera vez. Para dibujar una interfaz de usuario para su fragmento, usted debe devolver una Vista de este método que es la raíz de su fragmento de la presentación. Usted puede devolver null si el fragmento no proporciona una interfaz de usuario.

    onPause()
    El sistema llama a este método como el primer indicio de que el usuario está dejando el fragmento (aunque no siempre significa que el fragmento es de ser destruido). Que es donde normalmente se debe realizar los cambios que deben persistir más allá de la sesión de usuario actual (porque el usuario no puede volver).

Dejar respuesta

Please enter your comment!
Please enter your name here