2013-12-11 6 views
20

मैं वर्तमान में कम से कम SDK 10 के लिए निर्माण कर रहा हूं, इसलिए मुझे ActionBar लागू करने के लिए android-support-v7-appcompat लाइब्रेरी का उपयोग करना होगा। मैंने ActionBar सेटअप किया है, लेकिन अब मैं ListActivity जोड़ना चाहता हूं, हालांकि इसके लिए मेरी कक्षा को विस्तारित करने की आवश्यकता है और जावा में inheritance नहीं है। मुझे क्या करना चाहिए?संयोजन सूची एक्टिविटी और एक्शनबार एक्टिविटी

public class MainActivity extends ActionBarActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu items for use in the action bar 
    MenuInflater inflater = getMenuInflater(); 
    getSupportActionBar().setIcon(R.drawable.ic_action_search); 
    getSupportActionBar().setDisplayShowHomeEnabled(false); 
    getSupportActionBar().setDisplayShowTitleEnabled(false); 
    inflater.inflate(R.menu.main_activity_actions, menu); 
    return super.onCreateOptionsMenu(menu); 
    } 

} 
+1

इसलिए यदि आप पहले से ही समर्थन लाइब्रेरी का उपयोग कर रहे हैं तो ListFragment – Selvin

+0

का उपयोग करें, लेकिन मैं कक्षा को कैसे बढ़ा सकता हूं ताकि इसमें एक्शनबार एक्टिविटी और लिस्टफ्रैगमेंट शामिल हो? –

उत्तर

21

ListActivity को AppCompat पर पोर्ट नहीं किया गया है। शायद क्योंकि आपको इसे 'बहिष्कृत' माना जाना चाहिए, और इसके बजाय एक सूचीफ्रेम का उपयोग करें।

टुकड़े एक्शनबार एक्टिविटी के साथ काम करेंगे, बस सुनिश्चित करें कि वे समर्थन पुस्तकालय से टुकड़े हैं।

this के माध्यम से खंडों के बारे में एक पठन पढ़ें।

आपके उपयोग के मामले में, मैं केवल xml में खंड को परिभाषित करता हूं।

+0

पूरी तरह से काम करता है, धन्यवाद! –

+2

अगर उत्तर आपके प्रश्न का उत्तर दिया गया है तो उत्तर स्वीकार करें :) – athor

11

ऐसा करने का सबसे आसान तरीका ActionBarActivity के अंदर ListFragment का उपयोग करना है। मैं इसे इस तरह से किया था:

public class MyActivity extends ActionBarActivity { 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

     MyFragment fragment = new MyFragment(); 
     getSupportFragmentManager().beginTransaction().replace(android.R.id.content, fragment).commit(); 
    } 

    public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 
      case android.R.id.home: { 
       finish(); 
       break; 
      } 

      default: { 
       break; 
      } 
     } 
     return true; 
    } 

    public static class MyFragment extends ListFragment { 

     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 

      ... 
     } 

     public void onListItemClick(ListView listView, View view, int position, long id) { 
      ... 
     } 
    } 
} 

इस तरह आप भी इसके लिए एक xml की जरूरत नहीं है, और यह अच्छी तरह से काम करता है।

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