5

सक्षम करें मैं अपने टुकड़े में होम बटन को सक्षम करना चाहता हूं। यह सवाल पहले से पूछा गया था लेकिन एक गतिविधि के लिए।
मैंने कोशिश की ...होम बटन एक्शनबार शेरलॉक, शेरलॉकफ्रैगमेंट

getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

... लेकिन यह काम नहीं करता।

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

} 

आप SherlockFragment पर एक घर बटन कैसे सक्षम कर सकते हैं:
यहाँ मेरी कोड है?

उत्तर

13

क्या आपने नीचे दिए गए कोड को मुख्य गतिविधि जोड़ने का प्रयास किया है - वह extends SherlockActivity या extends SherlockFragmentActivity?

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

मुझे नहीं लगता कि आप कुछ है कि केवल extends SherlockFragment में getSupportActionBar कर सकते हैं।

+0

हाँ! यह काम कर रहा है तुमने अभी मेरा दिन बचाया: पी! – user1534326

+4

लेकिन 'शेरलॉक फ्रैगमेंट' आपको 'getSherlockActivity() प्राप्त करने की अनुमति देता है। GetSupportActionBar() '। –

25

आप विकल्प मेनू चयन ओवरराइड करने के लिए की जरूरत है:

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

ध्यान रखें, इसके बाद के संस्करण कोड एक गतिविधि (इसलिए finish()) में चलाए जा सकें। यदि आप Activity (जो मेरे लिए अजीब होगा ...) का उपयोग नहीं करते हैं, तो आपको उसे प्रतिस्थापित करने की आवश्यकता होगी।

+0

लेकिन यह "getSupportActionbar (0)" – user1534326

+1

पर एक त्रुटि प्रदान कर रहा है ... फिर अपने मूल पोस्ट में कहें। इसे 'getSherlockActivity() प्राप्त करने का प्रयास करें। GetSupportActionBar() '। – Eric

+0

उत्तर के लिए धन्यवाद लेकिन मैटडॉन्डर्स ने सही जवाब दे दिया है। – user1534326

0

सरल समाधान के इन तीन सरल चरणों का पालन करने के लिए है:

1 - AndroidManifest जो अपनी गतिविधि की मूल है में घोषित:

<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 - क्रिया बार में ऊपर चिह्न जोड़ें , बस अपने onCreate विधि से फोन:

getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

3 - खोलने के लिए जब उपयोगकर्ता ऊपर बटन दबाता है गतिविधि का उल्लेख करें:

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

नोट: यदि आप फोन (के रूप में @Eric ने सुझाव दिया):

finish(); 

के बजाय:

NavUtils.navigateUpFromSameTask(this); 

अपने वास्तव में प्रदर्शन नहीं कर रहे "ऊपर नेविगेशन", चूंकि documentation कहता है:

ऊपर नेविगेशन सिस्टम बैक बटन द्वारा प्रदान की गई पिछली नेविगेशन से अलग है। बैक बटन का उपयोग हाल ही में काम करने वाले स्क्रीन के इतिहास के माध्यम से रिवर्स क्रोनोलॉजिकल ऑर्डर में नेविगेट करने के लिए किया जाता है। यह आम तौर पर ऐप की पदानुक्रम संरचना (जो ऊपर नेविगेशन का आधार है) की बजाय स्क्रीन के बीच अस्थायी संबंधों पर आधारित होता है।

संबंधित मुद्दे