繁体   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