2012-03-18 93 views
1

爲什麼不是這個代碼工作?我已經堅持了2天。爲什麼這個程序意外停止?

public class SongsActivity extends Activity{ 

     DemoView demoview ; 
     FinalView finalview; 
     ViewFlipper c ; 
     /** Called when the activity is first created. */ 
     @Override 
     public void onCreate(Bundle savedInstanceState) { 

      super.onCreate(savedInstanceState); 
      demoview = new DemoView(this); 
      finalview = new FinalView(this); 
       // adding view to the viewflipper 
      c.addView(demoview,0); 
      c.addView(finalview, 1); 
       ///initializing the fliiper 
      c=(ViewFlipper)findViewById(R.id.viewFlipper1); 

      c.setAutoStart(true); 
      c.setFlipInterval(500); 
      c.startFlipping(); 

     } 
+0

我認爲Booyakka發現了這個問題:只要移動'addView'調用,然後在給'c'賦值之後就可以調用。但是,一般來說,您應該發佈logcat輸出,顯示導致程序失敗的任何異常。 – 2012-03-18 22:02:37

+0

@ted HOpp這裏是我的文件 – Ashishsingh 2012-03-18 22:12:33

+0

@tedhopp我是新來的這個網站,你可以建議我如何上傳我的文件在這個網站上的logcat – Ashishsingh 2012-03-18 22:16:31

回答

2

在使用setContentView設置您的Activity的視圖之前,您不能使用findViewById

儘管Booyakka的答案部分正確,但您並未使用resId R.id.viewFlipper1設置包含ViewFlipper的任何內容視圖。

其結果是,行...

c=(ViewFlipper)findViewById(R.id.viewFlipper1); 

將集合C,即使你初始化它作爲Booyakka的建議爲null。

爲什麼你不使用setContentView(...)與佈局xml?你試圖用resId R.id.viewFlipper1來查看視圖的事實表明你已經創建了佈局xml,但是你沒有對它進行膨脹,這是你問題原因的一部分。

編輯:使佈局膨脹取得XML佈局文件的內容並實例化它描述的對象。在setContentView(<layout-resource-id>)之前嘗試使用findViewById

嘗試使用您創建的佈局文件的名稱更改您的onCreate()方法。

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    // Inflate the main.xml file using the following... 
    setContentView(R.layout.main); 

    // Move the findViewById(...) call to here... 
    c=(ViewFlipper)findViewById(R.id.viewFlipper1); 

    demoview = new DemoView(this); 
    finalview = new FinalView(this); 

    c.addView(demoview,0); 
    c.addView(finalview, 1); 

    c.setAutoStart(true); 
    c.setFlipInterval(500); 
    c.startFlipping(); 
} 
+0

充氣的含義是什麼? – Ashishsingh 2012-03-18 22:17:51

+0

查看編輯到我上面的答案結束。 – Squonk 2012-03-18 22:23:53

+0

感謝它的工作。 – Ashishsingh 2012-03-18 22:31:05

2

您正在初始化之前添加視圖。

當你調用c.addView(demoview,0); c爲空,因爲它尚未初始化。 用ViewFlipper初始化c後添加視圖。

+0

更改該代碼後,它也顯示錯誤。 – Ashishsingh 2012-03-18 22:04:00

+0

然後你又犯了一個錯誤。發佈新的錯誤日誌作爲評論。 – dmon 2012-03-18 22:10:58

+0

哈哈。如果您認爲http:// C:\ Documents and Settings \ dtr \ log.txt是一個有效的鏈接,那麼與編寫vaild android代碼相比,您遇到的問題更多。 – adelphus 2012-03-18 22:18:28