5

Quiero habilitar el botón de inicio en mi fragmento. Esta pregunta se hace antes, pero para una actividad.
Probé ...Activar el botón de inicio Barra de acciones Sherlock, Sherlockfragment

getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

... pero esto no funciona.
Aquí está mi código:

import com.actionbarsherlock.R; 
import com.actionbarsherlock.app.ActionBar; 
import com.actionbarsherlock.app.ActionBar.Tab; 
import com.actionbarsherlock.app.SherlockFragment; 
import com.actionbarsherlock.view.MenuItem; 

import android.support.v4.app.Fragment; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.view.ViewGroup; 

public class SafanTab extends SherlockFragment { 

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

    public OnClickListener onOverClick = new OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Intent myIntent = new Intent(view.getContext(), Over_Safan.class); 
      startActivityForResult(myIntent, 0); 
     } 
    }; 

    public OnClickListener onProductenClick = new OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Intent myIntent = new Intent(view.getContext(), Over_Safan.class); 
      startActivityForResult(myIntent, 0); 
     } 
    }; 

    public OnClickListener onTwitterClick = new OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Intent myIntent = new Intent(view.getContext(), Over_Safan.class); 
      startActivityForResult(myIntent, 0); 
     } 
    }; 

} 

¿Cómo se puede permitir que un botón de inicio en SherlockFragment?

Respuesta

13

¿Has intentado agregar el código de abajo la Actividad principal - la que extends SherlockActivity o extends SherlockFragmentActivity?

ActionBar actionBar = getSupportActionBar(); 
actionBar.setDisplayHomeAsUpEnabled(true); 

No creo que pueda getSupportActionBar en algo que sólo extends SherlockFragment.

+0

sí! funciona, acabas de salvar mi día: P! – user1534326

+4

Pero 'SherlockFragment' te permite llamar a' getSherlockActivity(). GetSupportActionBar() '. –

25

También es necesario para anular la selección del menú Opciones:

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    if (item.getItemId() == android.R.id.home) { 
     finish(); 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 

tener en cuenta, el código de arriba se ejecutaría en una actividad (por lo tanto finish()). Si no usa un Activity (que sería extraño para mí ...), entonces tendrá que reemplazarlo.

+0

pero está dando un errot en "getSupportActionbar (0)" – user1534326

+1

... dígalo en su publicación original. Intente cambiarlo a 'getSherlockActivity(). GetSupportActionBar()'. – Eric

+0

Gracias por la respuesta, pero mattdonders tiene la respuesta correcta. – user1534326

0

La solución más sencilla es seguir estos tres sencillos pasos:

1 - Declarar en el AndroidManifest que es el padre de su actividad:

<activity android:theme="@style/Theme.MyApp" 
      android:name="com.example.CurrentActivity" 
      android:parentActivityName="com.example.MainActivity" > 
     <!-- Parent activity meta-data to support 4.0 and lower --> 
      <meta-data 
       android:name="android.support.PARENT_ACTIVITY" 
       android:value="com.example.ParentActivity" /> 

2 - Añadir el icono en la barra de acción , simplemente llamando a su método de onCreate:

getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

3 - Especificar la actividad para abrir cuando el usuario presiona el botón arriba:

@Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     if (item.getItemId() == android.R.id.home) { 
      NavUtils.navigateUpFromSameTask(this); 
      return true; 
     } 
     return super.onOptionsItemSelected(item); 
    } 

NOTA: Si llama (según lo sugerido por @Eric):

finish(); 

en lugar de:

NavUtils.navigateUpFromSameTask(this); 

su no son realmente interpretando "a la navegación", desde como el documentation dice:

La navegación ascendente es distinta de la navegación trasera proporcionada por el botón Atrás del sistema. El botón Atrás se utiliza para navegar en orden cronológico inverso a través del historial de pantallas con las que el usuario ha trabajado recientemente. En general, se basa en las relaciones temporales entre pantallas, en lugar de en la estructura jerárquica de la aplicación (que es la base para la navegación ascendente).

Cuestiones relacionadas