2014-06-12 50 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解決了這個問題。

相關問題