0

eveything看起來很好,但當我嘗試按按鈕更改視圖時仍然出現錯誤。 這裏是代碼:Android - 使用ViewFlipper時出錯

package com.example.testy; 

import android.os.Bundle; 
import android.app.Activity; 
import android.view.Menu; 
import android.view.View; 
import android.widget.ViewFlipper; 

public class MainActivity extends Activity { 

    ViewFlipper flipper; 

    public void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     flipper = (ViewFlipper) findViewById(R.id.viewFlipper1); 
     setContentView(R.layout.activity_main); 

    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.activity_main, menu); 
     return true; 
    } 

    public void clcik(View v) { 
     flipper.showNext(); 
    } 

} 

這裏是我的XML:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:gravity="top" > 

    <ViewFlipper 
     android:id="@+id/viewFlipper1" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" > 

     <Button 
      android:id="@+id/button1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:onClick="click" 
      android:text="Button!!" /> 

     <TextView 
      android:id="@+id/textView1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="TextView!!" /> 
    </ViewFlipper> 

</RelativeLayout> 

任何人都知道什麼都可以錯在這個代碼? 謝謝你的答案!

+0

爲了有效使用'ViewFlipper'小部件,它應該使用'LinearLayout'來區分屏幕的單獨「頁面」... – t0mm13b 2012-08-07 00:18:42

回答

1

也許你應該修復你的方法名稱到click

public void **clcik**(View v) { 
     flipper.showNext(); 
    } 

由於在我們的活動代碼錯誤拼寫(clcik),你可能會得到一個例外,因爲Android的找不到click方法。

並感謝@ yugidroid的答案,我發現多了一個錯誤在你的代碼:

公共無效的onCreate(捆綁savedInstanceState){

super.onCreate(savedInstanceState); 
    flipper = (ViewFlipper) findViewById(R.id.viewFlipper1); 
    setContentView(R.layout.activity_main); 

} 

你甚至您有任何意見(a調用之前調用findViewByIdsetContentView)。因爲這個,你將得到一個NullPointException。

我會建議您打電話給super.onCreateonCreate()方法的第一行。那是what Google does

關於在佈局上設置點擊監聽器或在代碼上創建監聽器和設置。那麼,沒有太大的區別,雖然後者肯定比第一次使用反射更快,但比調用方法成本更高。

0

首先,請確保您撥打setContentView(R.layout.activity_main);後超,其良好的做法。

你的問題是你設置了android:onClick="click"但是你在Java中引用了錯誤的方法(clcik不存在)。

我建議你在活動中聲明和設置監聽器,而不是在xml中。