首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在ActionBar中用中心标志显示ListActivity

在ActionBar中用中心标志显示ListActivity
EN

Stack Overflow用户
提问于 2015-01-29 11:47:52
回答 2查看 107关注 0票数 0

试图显示一个ActionBar与应用程序的标志左边,标题的屏幕为中心,菜单图标在右边。下面的类扩展了一个ListActivity,我可以这样做:

我创建的方法是centerlogo();请参阅下面的代码摘录:

代码语言:javascript
复制
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);
    }

}

我得到以下错误:

代码语言:javascript
复制
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)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-29 14:43:42

我决定接受GareginSargsyan的建议。主要的问题是我试图膨胀默认的android列表,所以我实例化了一个新的ListView,设置了列表视图的ContentView,剩下的就是历史。

代码语言:javascript
复制
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);
        }

    }
票数 1
EN

Stack Overflow用户

发布于 2015-01-29 12:06:22

很可能是getActionBar()导致了异常。尝试使用getSupportActionBar()代替。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28213996

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档