2014-06-12 25 views
0

我正在为Android编程类进行分配。我不是在寻找勺子喂养的代码,但我无法弄清楚是什么导致了这个问题。当调用setFactory()时,TextSwitcher引发“超过2个视图”错误

作业的细节要求我有一个ViewSwitcher,它包含一个ListView和多个TextView(在第二个视图上),以便在单击项目时显示列表中项目的数据。为了填充ListView,我们必须使用TextSwitchers来显示/更改文本的动画效果。我可以通过ViewSwitcher或TextSwitchers让应用程序在模拟器中工作,但不能同时使用。调用TextSwitcher.setFactory()方法时抛出错误并终止应用程序;如果我不调用.setFactory()程序继续而没有错误。

我问过我的导师和同学的求助,自从我星期一请求帮助后,只有一个同学已经回复。这个任务现在已经晚了一个多星期,所以我只是假设在这一点上我会得到一个零,但是,下一个项目是建立在这个项目之上的,所以我仍然需要完成它。

放弃赞成的实际代码发布XML:

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

谢谢!

回答

0

一位同学看了看项目,说我的问题是我的MainActivity扩展了ActionBarActivity而不是Activity。我不明白为什么Android会区分这一点,但它确实并改变了扩展Activity解决了这个问题。

相关问题