簡體   English   中英

activity_main.xml上的默認按鈕格式導致崩潰

[英]Default Button Format on activity_main.xml Causing Crash

我是Android Studio的新手,我正在按照教程學習編碼。 我將一個按鈕放入我的activity_main.xml中,並使用拖放方法(xml文件的“設計”選項卡)將該按鈕的onClick屬性引用到MainActivity.java文件中的方法buttonOnClick上。 原始代碼如下:

activity_main.xml(省略了無關代碼):

<Button
    android:text="@string/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/button"
    android:layout_centerVertical="true"
    android:layout_centerHorizontal="true"
    android:visibility="visible"
    android:onClick="buttonOnClick (MainActivity)" />

MainActivity.java:

public class MainActivity extends AppCompatActivity {

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
  }

  public void buttonOnClick(View v) {
    Button button = (Button) v;
    button.setText("Click");
  }

運行此代碼后,當我單擊按鈕時,它崩潰了。 如果我刪除了onClick屬性的(MainActivity)部分,它會起作用。 我不知道為什么這樣做有效,但確實如此。 也許有人可以告訴我為什么嗎?

應用程序崩潰時收到的錯誤消息如下:

java.lang.IllegalStateException:在視圖類android.support.v7.widget.AppCompatButton上定義的ID為“ button”的android:onClick屬性,在父級或祖先上下文中找不到方法buttonOnClick(MainActivity)(View)

看來(View)是假定的,因此您也不需要要求(MainActivity)。

<Button
    android:text="@string/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/button"
    android:layout_centerVertical="true"
    android:layout_centerHorizontal="true"
    android:visibility="visible"
    android:onClick="buttonOnClick" />

android:onClick="buttonOnClick (MainActivity)"更改為

 android:onClick="buttonOnClick"

試試這個:從xml移除android:onClick =“ buttonOnClick(MainActivity)”

<Button
    android:text="@string/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/button"
    android:layout_centerVertical="true"
    android:layout_centerHorizontal="true"
    android:visibility="visible" />

用代碼編寫onClick

   public class MainActivity extends AppCompatActivity {

    public Button b1; 

      @Override
      protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

    b1 = (Button)findViewById(R.id.button);  
    b1.setOnClickListener(new OnClickListener(){  

            @Override  
            public void onClick(View view) { 
            b1.setText("Click");


  }

     }); 

    }

    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM