5

Desidero abilitare il pulsante home nel mio frammento. Questa domanda viene posta prima ma per un'attività.
ho provato ...Abilita pulsante home Barra delle azioni Blocco schermo, Sherlockfragment

getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

... ma questo non funziona.
Ecco il mio codice:

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); 
     } 
    }; 

} 

Come si può abilitare un tasto home su SherlockFragment?

risposta

13

Hai provato ad aggiungere il seguente codice all'attività principale, quella che è extends SherlockActivity o extends SherlockFragmentActivity?

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

Non credo che si può getSupportActionBar in qualcosa che solo extends SherlockFragment.

+0

sì! funziona, hai appena salvato la mia giornata: P! – user1534326

+4

Ma 'SherlockFragment' ti permette di chiamare' getSherlockActivity(). GetSupportActionBar() '. –

25

È inoltre necessario ignorare la selezione del menu opzioni:

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

Tenete a mente, il codice di cui sopra sarebbe eseguito in un'attività (da qui finish()). Se non usi uno Activity (che sarebbe strano per me ...), allora dovrai sostituirlo.

+0

ma sta dando un errato a "getSupportActionbar (0)" – user1534326

+1

... quindi dillo nel tuo post originale. Prova a cambiarlo in 'getSherlockActivity(). GetSupportActionBar()'. – Eric

+0

Grazie per la risposta, ma mattdonders ha dato la risposta giusta. – user1534326

0

La soluzione più semplice è quella di seguire questi tre semplici passaggi:

1 - dichiarare nella AndroidManifest che è il genitore della vostra attività:

<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 - Aggiungere l'icona nella barra di azione , semplicemente chiamando dal tuo metodo onCreate:

getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

3 - Specificare l'attività da aprire quando l'utente preme il pulsante Up:

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

NOTA: Se si chiama (come suggerito da @Eric):

finish(); 

invece di:

NavUtils.navigateUpFromSameTask(this); 

tua non sono molto performante "up navigazione", dal momento che il documentation dice:

La navigazione verso l'alto è diversa dalla navigazione indietro fornita dal pulsante Indietro del sistema. Il pulsante Indietro viene utilizzato per navigare in ordine cronologico inverso attraverso la cronologia delle schermate con cui l'utente ha lavorato di recente. Generalmente si basa sulle relazioni temporali tra gli schermi, piuttosto che sulla struttura gerarchica dell'app (che è la base per la navigazione).

Problemi correlati