2015-01-29 4 views
0

Попытка показать ActionBar с логотипом приложения слева, название экрана с центром и значки меню справа. Класс ниже расширяет ListActivity, как я могу это сделать:Показать ActionBar с центрированным логотипом в ListActivity

Метод, который я создал, был centerlogo(); Смотрите отрывок кода ниже:

public class NewsActivity extends ListActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     ListView list; 
     String[] itemname = { "Bafana crash out of Afcon", 
       "Mali and Guinea face ultimate lottery", 
       "Orlando Pirates eye cup glory", 
       "Ivory Coast advance to Afcon quarters", 
       "Algeria qualify for Afcon quarter-finals", 
       "Reflect on Afcon lessons - Mbalula", 
       "Tovey preaches patience with Bafana", 
       "SuperSport's Brockie harbours lofty goals" }; 
     Integer[] imgid = { R.drawable.bafana, R.drawable.mailguinea, 
       R.drawable.orlando, R.drawable.ivorycoast, R.drawable.algeria, 
       R.drawable.reflection, R.drawable.tovey, R.drawable.supersport, }; 

     CustomListAdapter adapter = new CustomListAdapter(this, itemname, imgid); 
     setListAdapter(adapter); 


     centreLogo(); 
    } 

    private void centreLogo() { 
     // TODO Auto-generated method stub 
       Drawable d = getResources().getDrawable(R.drawable.banner); 
    android.app.ActionBar bar = getActionBar(); 
    bar.setBackgroundDrawable(d); 
    bar.setDisplayShowTitleEnabled(false); 
    bar.setDisplayShowCustomEnabled(true); 
    // getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
    bar.setCustomView(R.layout.news_view); 
    bar.setDisplayShowHomeEnabled(true); 
    bar.setIcon(R.drawable.icon); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu items for use in the action bar 
     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.main, menu); 
     return super.onCreateOptionsMenu(menu); 
    } 

    public void readMore(View view) { 
     Intent read = new Intent(NewsActivity.this, ReadMoreActivity.class); 
     startActivity(read); 
    } 

} 

Я получаю следующее сообщение об ошибке:

01-29 13:45:40.093: E/AndroidRuntime(15402): FATAL EXCEPTION: main 
01-29 13:45:40.093: E/AndroidRuntime(15402): java.lang.RuntimeException: Unable to start activity ComponentInfo{platinum.platinumstars/platinumnews.NewsActivity}: java.lang.NullPointerException 
01-29 13:45:40.093: E/AndroidRuntime(15402): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2245) 
01-29 13:45:40.093: E/AndroidRuntime(15402): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2295) 
01-29 13:45:40.093: E/AndroidRuntime(15402): at android.app.ActivityThread.access$700(ActivityThread.java:150) 
01-29 13:45:40.093: E/AndroidRuntime(15402): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1280) 
01-29 13:45:40.093: E/AndroidRuntime(15402): at android.os.Handler.dispatchMessage(Handler.java:99) 
01-29 13:45:40.093: E/AndroidRuntime(15402): at android.os.Looper.loop(Looper.java:176) 
01-29 13:45:40.093: E/AndroidRuntime(15402): at android.app.ActivityThread.main(ActivityThread.java:5279) 
01-29 13:45:40.093: E/AndroidRuntime(15402): at java.lang.reflect.Method.invokeNative(Native Method) 
01-29 13:45:40.093: E/AndroidRuntime(15402): at java.lang.reflect.Method.invoke(Method.java:511) 
+0

Считаете ли вы использование 'ActionBarActivity' и' Toolbar' из библиотеки поддержки? – GareginSargsyan

+0

Если я использую ActionBarActivity, мой setListAdapter (адаптер) больше не определяется. –

ответ

0

Скорее всего, getActionBar() является причиной исключения. Вместо этого попробуйте использовать getSupportActionBar().

+0

После перехода на использование getSupportActionBar(), я получаю ошибку nullpointer –

1

Я решил пойти с предложением Гарегина Саргсяна. Основная проблема заключалась в том, что я пытался раздуть список андроидов по умолчанию, поэтому я создал экземпляр нового ListView, , чтобы установить ContentView в виде списка, а остальное - в истории.

public class NewsActivity extends ActionBarActivity { 
     ListView list; 
     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      // TODO Auto-generated method stub 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_platinum_news_list); 
      String[] itemname = { "Bafana crash out of Afcon", 
        "Mali and Guinea face ultimate lottery", 
        "Orlando Pirates eye cup glory", 
        "Ivory Coast advance to Afcon quarters", 
        "Algeria qualify for Afcon quarter-finals", 
        "Reflect on Afcon lessons - Mbalula", 
        "Tovey preaches patience with Bafana", 
        "SuperSport's Brockie harbours lofty goals" }; 
      Integer[] imgid = { R.drawable.bafana, R.drawable.mailguinea, 
        R.drawable.orlando, R.drawable.ivorycoast, R.drawable.algeria, 
        R.drawable.reflection, R.drawable.tovey, R.drawable.supersport, }; 

    //  CustomListAdapter adapter = new CustomListAdapter(this, itemname, imgid); 
    //  setListAdapter(adapter); 
      CustomListAdapter test = new CustomListAdapter(this, itemname, imgid); 
      list = (ListView) findViewById(R.id.list); 
      list.setAdapter(test); 

      centreLogo(); 
     } 



     private void centreLogo() { 
      // TODO Auto-generated method stub 
      Drawable d = getResources().getDrawable(R.drawable.banner); 
      getSupportActionBar().setBackgroundDrawable(d); 
      getSupportActionBar().setDisplayShowTitleEnabled(false); 
      getSupportActionBar().setDisplayShowCustomEnabled(true); 
      // getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
      getSupportActionBar().setCustomView(R.layout.news_view); 
      getSupportActionBar().setDisplayShowHomeEnabled(true); 
      getSupportActionBar().setIcon(R.drawable.icon); 
     } 

     @Override 
     public boolean onCreateOptionsMenu(Menu menu) { 
      // Inflate the menu items for use in the action bar 

      getMenuInflater().inflate(R.menu.newsmenu, menu); 
       return true; 
     } 

     public void readMore(View view) { 
      Intent read = new Intent(NewsActivity.this, ReadMoreActivity.class); 
      startActivity(read); 
     } 

    } 
Смежные вопросы