尝试在空对象引用上调用虚拟方法'void android.widget.Button.setOnClickListener,即使我定义了所有按钮


package cppandi.apjquotes;
import android.content.Intent;
import android.os.CountDownTimer;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Button;
import android.view.View;
public class MainActivity extends AppCompatActivity {
Button btn1;
Button btn2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.front);
btn1 = (Button) this.findViewById(R.id.quotes);
btn2 = (Button) this.findViewById(R.id.about);
new CountDownTimer(5000, 1000) {
@Override
public void onTick(long millisUntilFinished) {
}
@Override
public void onFinish() {
//set the new Content of your activity
setContentView(R.layout.activity_main);
}
}.start();
btn1.setOnClickListener(new View.OnClickListener() { 
public void onClick(View v) {
// Perform action on click
Intent i = new Intent(v.getContext(), quotes.class);
startActivity(i);
}
});
btn2.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Perform action on click
Intent i = new Intent(v.getContext(), about.class);
startActivity(i);
}
});
}}


<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="cppandi.apjquotes.MainActivity">
<Button
android:text="@string/quotes"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="126dp"
android:id="@+id/quotes"
android:onClick="btnClickAct1"/>
<Button
android:text="@string/about"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/quotes"
android:layout_alignLeft="@+id/quotes"
android:layout_alignStart="@+id/quotes"
android:layout_marginTop="94dp"
android:id="@+id/about"
android:layout_alignRight="@+id/quotes"
android:layout_alignEnd="@+id/quotes"
android:onClick="btnClickAct2"/>
</RelativeLayout>

在这里,我在null对象引用上遇到"尝试调用虚拟方法'void android.widget.button.button.setonclicklistener(android.view.view.view.view.view $ onclicklistener)",甚至我都有所有按钮。<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<</p>

您的按钮在layout_main中。

您将在5秒后设置主布局。在此点,仅将布局夸大并设置。

如果您在此之前尝试引用视图,则视图将返回null。仅在计时器完成后,才应分配您的按钮和听众。在此之前,即使您使用findViewById,视图也将被分配为空,因为布局未夸大。

使用计时器更改这样的布局可能不是一个好主意。我认为您正在寻找飞溅屏幕而不是当前方法。Google Splash屏幕显示该应用何时尚未加载。

相关内容

  • 没有找到相关文章

最新更新