首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >调用TextSwitcher ()时抛出“多个视图”错误

调用TextSwitcher ()时抛出“多个视图”错误
EN

Stack Overflow用户
提问于 2014-06-12 04:59:50
回答 1查看 757关注 0票数 0

我正在为一个Android编程类做作业。我不想用勺子喂养的代码,但我不知道是什么原因造成的问题。

分配的细节要求我有一个ViewSwitcher,它包含一个ListView和多个TextViews (在第二个视图上),用于在单击项目时显示列表中项中的数据。要填充ListView,我们必须在显示/更改文本时使用TextSwitchers来动画。我可以让应用程序在模拟器中工作,可以使用ViewSwitcher或TextSwitchers,但不能两者兼得。当调用TextSwitcher.setFactory()方法时,会抛出错误并终止应用程序;如果我不调用.setFactory(),程序将继续运行,不会出现错误。

我已经向我的老师和同学寻求帮助,自从我在星期一寻求帮助以来,只有一位同学做出了回应。这个作业现在已经晚了一个多星期了,所以我只是假设现在我会得到一个零,但是,下一个项目是从这个项目开始的,所以我仍然需要完成它。

放弃发布xml以支持实际代码:

代码语言:javascript
运行
复制
public View getView(int position, View convertView, ViewGroup parent) 
    {
        ViewGroup listItem = null;
        TextSwitcher stockNameTS = null;
        TextSwitcher stockSymbolTS = null;
        TextSwitcher stockPriceTS = null;
        StockInfo stockInfo = null;

        if(convertView == null)
        {
            listItem = (ViewGroup) getLayoutInflator().inflate(R.layout.list_item, null);
            listItem.setTag(getParent());
            stockInfo = stockList.get(position);

            //Get TextSwitchers
            stockNameTS = (TextSwitcher) listItem.findViewById(R.id.stockNameTS);
            stockSymbolTS = (TextSwitcher) listItem.findViewById(R.id.stockSymbolTS);
            stockPriceTS = (TextSwitcher) listItem.findViewById(R.id.stockPriceTS);

            stockNameTS.setFactory(new ViewFactory() {//throws here

                @Override
                public View makeView() {
                    TextView tv = new TextView(MainActivity.this);
                    tv.setTextSize(20);
                    return tv;
                }
            });
            stockSymbolTS.setFactory(new ViewFactory() {

                @Override
                public View makeView() {
                    TextView tv = new TextView(MainActivity.this);
                    tv.setTextSize(20);
                    return tv;
                }
            });
            stockPriceTS.setFactory(new ViewFactory() {

                @Override
                public View makeView() {
                    TextView tv = new TextView(MainActivity.this);
                    tv.setTextSize(20);
                    return tv;
                }
            });

            //Set animations
            stockNameTS.setInAnimation(MainActivity.this, android.R.anim.slide_in_left);
            stockNameTS.setOutAnimation(MainActivity.this, android.R.anim.slide_out_right);
            stockSymbolTS.setInAnimation(MainActivity.this, android.R.anim.slide_in_left);
            stockSymbolTS.setOutAnimation(MainActivity.this, android.R.anim.slide_out_right);
            stockPriceTS.setInAnimation(MainActivity.this, android.R.anim.slide_in_left);
            stockPriceTS.setOutAnimation(MainActivity.this, android.R.anim.slide_out_right);
        }
        else
        {
            listItem = (ViewGroup) convertView; 
        }

        stockNameTS.setText(stockInfo.getName());
        stockSymbolTS.setText(stockInfo.getSymbol());
        stockPriceTS.setText(USDFormat.format(stockInfo.getPrice()));

        return listItem;
    }

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-28 21:20:36

一位同学看了看这个项目,说我的问题是我的MainActivity扩展了ActionBarActivity而不是活动。我不明白为什么Android会在这两者之间做出区分,但它确实做到了,并转变为扩展活动解决了问题。

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

https://stackoverflow.com/questions/24176727

复制
相关文章

相似问题

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