2011-10-14 26 views
1
public class Menu extends Activity { 
    /** Called when the activity is first created. */ 



public void onCreate(Bundle icicle) { 


    //myIntent.setClassName("hello.World", "hello.World.mybuttonclick"); 
    // myIntent.putExtra("com.android.samples.SpecialValue", "Hello, Joe!"); // key/value pair, where key needs current package prefix. 
    //startActivity(myIntent); 

     //Button myButton = (Button) findViewById(R.id.my_button); 
     super.onCreate(icicle); 


     setContentView(R.layout.main); 
    } 

public void updateLayout(){ 

    Intent myIntent = new Intent(Menu.this, mybuttonclick.class); 
    startActivity(myIntent); 

    // TextView sayHello = (TextView) findViewById(R.id.Hello); 

} 

} 

嗨,我是一個新的Android的Java的學生,我們要開發一個簡單的Hello World應用程序..我找到了一些困難,讓我的onClick()活動工作,使用android:在xml中的Onclick ..我想要做的是改變內容視圖做顯示一個簡單的不同的佈局,並說你好..我使用setContentLayout來做到這一點,每次我點擊說按鈕tho android應用程序崩潰了..我做錯了什麼?的Android(學生CW)需要方向的

問候,

斯特凡

回答

2

當您設置一個XML格式的點擊收聽您必須你點擊在活動中定義的方法。比方說,你設置的onClick在xml中是「buttonClicked」 ,你必須創建一個類似於下面的方法。

public void buttonClicked(View view) 
    { 
      //Your code here 
    } 

需要注意的是該方法是一個公共的void,只有一個類型爲View的參數。 XML定義的點擊監聽器必須像這樣工作。上例中的視圖對象是被點擊的視圖。

1

您更新佈局功能需要讀取

public void updateLayout(View view) 
0

在回答你的問題,有許多的東西,是造成你描述的複雜問題。首先要說的是,如果你爲某些事情做出讓步,你不必以任何特定的方式做任何事情。 Android是一個非常靈活的平臺和Java,因爲OOP語言允許您執行許多非OOP語言所不具備的功能。

每當你創建一個「可點擊」項目,如Button,如果你想讓你的程序響應,你必須有一些東西「聽」它。這被稱爲聽衆。在你的情況下,你正在尋找一個OnClickListenerOnClickListener確實不是必須是必要的Activity的一部分。它只是一個classimplements View.OnClickListener。然後,你已經告訴Button它的聽衆的方法是setOnClickListener()。以下示例顯示了沒有使用XML進行聲明的必要條件(但它很重要)。

class Menu extends Activity implements View.OnClickListener 
{ 
    public void onCreate(Bundle icicle) 
    { setContentView(R.layout.main); 
      Button btn = (Button)findViewById(R.id.BUTTON_ID_AS_DEFINED_BY_YOUR_XML); 
      btn.setOnClickListener(this); 
    } 

    public void onClick(View view) 
    { int id = view.getId(); 
      if (id == R.id.BUTTON_ID_AS_DEFINED_BY_YOUR_XML) 
       updateLayout()//Do your Click event here 
    } 

    public void updateLayout() 
    { //updateLayout code... 
    } 
} 

需要注意的是上面的OnClick()。每個OnClickListener必須使用與OnClick()相同的簽名。這意味着它必須具有相同的返回和相同的參數,即使它具有不同的名稱。對於您正在嘗試執行的操作(使用XML),您已將android:OnClick設置爲updateLayout。這意味着`UpdateLayout請()如下必須聲明:

public void updateLayout(View view) 

現在,得到了更新方法實際工作:雖然你提供你的代碼,我們真的不知道你做了什麼錯誤。如果我們有一個包含您收到的錯誤的Logcat輸出的副本,解決問題總是容易得多。有一次,我們可以明確地針對您的錯誤,並且我可以編輯我的答案以包含您可能需要的內容。

FuzzicalLogic