簡體   English   中英

單擊按鈕時在 startActivity 上崩潰

[英]Crashing on startActivity when clicking button

有同樣的問題。 該按鈕在正確的時間初始化,但由於某種原因,它在單擊時崩潰。 xml 文件說 onClick 處理程序缺少相關活動。

xml

<Button
    android:id="@+id/start_reg_btn"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:layout_marginBottom="216dp"
    android:onClick="onClick"
    android:text="@string/need_a_new_account" />

Java

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_start);

    mRegBtn = (Button) findViewById(R.id.start_reg_btn);

    mRegBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent reg_intent = new Intent(StartActivity.this, RegisterActivity.class);
            startActivity(reg_intent);
        }
    });
}

android 編程非常新。 任何幫助表示贊賞

有兩種方法可以解決您的問題:

  1. 當您在 XML 中聲明 onClick 處理程序時,您需要在活動中實現該方法。

在您的情況下,您已使用此行為 XML 上的按鈕聲明了 onClick 處理程序:

 android:onClick="onClick"

因此,您現在必須在您的活動中創建一個方法名稱 onClick() 並在那里執行您的代碼,如下所示:

public void onClick(View v) {
  Intent reg_intent = new Intent( StartActivity.this, RegisterActivity.class);
  startActivity(reg_intent);
}
  1. 從 XML 中刪除此行:
 android:onClick="onClick"

並做你已經做過的事情:

mRegBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent reg_intent = new Intent( StartActivity.this, RegisterActivity.class);
                startActivity(reg_intent);
            }
        });

所以,主要概念是你不能同時使用android:onClicksetOnClickListener 您必須一次使用一個。

android:onClick and `setOnClickListener` can not used simultaneous.

正確使用 android:onClick 可以參考 官方鏈接

嘗試使用getContext()獲取當前上下文並實現為。

public void onClick(View v) {
    Intent reg_intent = new Intent(v.getContext(), RegisterActivity.class);
    v.getContext().startActivity(reg_intent);
}

並從 xml 文件中定義onClick或使用View.setOnClickListener以編程方式定義它。 兩者不能共存。

只需從 Xml 中刪除 onClick 並嘗試再次運行

發現 TextEditinput.= TextInputLayout 的錯誤,這就是它崩潰的原因。 它也可以通過 onClick 方法或 SetuponClickListener 工作,所以謝謝大家和他們的幫助

暫無
暫無

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

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