添加setOnClickListener Android Studio时出错

时间:2018-02-12 16:35:23

标签: java android

所以对于一个学校项目,我正在制作一个应用程序,但我被困住了。 我的主课上有一个按钮。 此类的XML代码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.larsb.csvvg.Home"
    android:background="@drawable/home">

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

    <Button
        android:id="@+id/Salland"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="45dp"
        android:text="Button"
        android:visibility="visible"
        android:layout_alignTop="@+id/Lariks"
        android:layout_alignLeft="@+id/Lariks"
        android:layout_alignStart="@+id/Lariks" />

    <Button
        android:id="@+id/CSG"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button"
        android:visibility="visible"
        android:layout_below="@+id/Salland"
        android:layout_alignLeft="@+id/Salland"
        android:layout_alignStart="@+id/Salland" />
</RelativeLayout>

所以我想做的是当我点击Lariks时我切换到一个新的活动。 我尝试使用以下代码执行此操作:

public class MainActivity extends AppCompatActivity {
    private static int WELCOME=4000;
    Button lariks;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        lariks = (Button)findViewById(R.id.Lariks);
        lariks.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
        
            }
        });
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                Intent intent=new Intent(MainActivity.this,Home.class );
                startActivity(intent);
                finish();
            }
        },WELCOME);

    }

}
在public void onClick(view)中,我获得了切换活动的代码,这不是问题所在。 问题是,只要我添加:

lariks.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {

            }
        });

该应用无法再启动。它启动模拟器,但它一直说应用程序已停止。任何人都知道为什么会这样?如果我删除了应用程序实际运行的那部分代码。

1 个答案:

答案 0 :(得分:2)

Button android:id="@+id/Lariks" activity_main不在tools:context="com.example.larsb.csvvg.Home"布局中(由findViewById(R.id.Lariks)和您的崩溃证明)。因此setOnClickListener()返回null,并且尝试在此空引用上调用findViewById()会导致崩溃。

您的setOnClickListener() - Home对可能属于activity_main活动,或者该按钮应位于std::ofstream device ("/dev/usb/lp0",std::ofstream::binary); std::uint8_t const message[] = { 0x1b, 0x70, 0x00, 0x19, 0xfa }; if (device) device.write(reinterpret_cast<char const*>(message), sizeof message); 布局中。