Моя программа открывается с помощью страницы входа, а затем переходит на страницу с двумя кнопками (перейдите к счетчику и перейдите к сканированию штрих-кода).Попытка ссылаться на виртуальный метод ... на ошибку ссылки на нулевой объект?
Очень простой на данный момент, но я застреваю, потому что я нажимаю кнопку сканирования штрих-кода, и он отлично перемещается на новую страницу, но если я нажму кнопку «идти на счетчик» (которая идет на класс хронометра) , программа выйдет из строя - даже если для нее создан класс.
Это дает мне эту ошибку:
Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference.
Вот мой код
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
public class page1 extends AppCompatActivity implements View.OnClickListener {
Button scanner,go2count;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_page1);
scanner = (Button) findViewById(R.id.scanner);
go2count = (Button) findViewById(R.id.go2count);
scanner.setOnClickListener(this);
go2count.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch(v.getId()){
case R.id.scanner:
startActivity(new Intent(this, ScanPage.class));
break;
case R.id.go2count:
startActivity(new Intent(this, ChronoPage.class));
break;
}
}
Так, если нажать на кнопку 'сканер', он отлично работает. Но если я нажму кнопку «go2count», программа сообщит мне об ошибке.
Это код хронометр:
import android.os.Bundle;
import android.os.SystemClock;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Chronometer;
import android.widget.Button;
public class ChronoPage extends AppCompatActivity implements View.OnClickListener {
private Button start;
private Button stop;
private Button resume;
private Button reset;
private long time = 0;
private Chronometer myChrono;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
uI();
}
public void uI(){
start = (Button) findViewById(R.id.bStart);
start.setOnClickListener(this);
stop = (Button) findViewById(R.id.bStop);
stop.setOnClickListener(this);
resume = (Button) findViewById((R.id.bResume));
resume.setOnClickListener(this);
reset = (Button) findViewById(R.id.bReset);
reset.setOnClickListener(this);
myChrono = (Chronometer) findViewById(R.id.chronometer);
}
@Override
public void onClick(View v){
if (v == start){
myChrono.setBase(SystemClock.elapsedRealtime());
myChrono.start();
}
else if (v == stop){
time = SystemClock.elapsedRealtime();
myChrono.stop();
// printing();
}
else if (v == resume){
myChrono.setBase(myChrono.getBase() + SystemClock.elapsedRealtime() - time);
myChrono.start();
}
else if (v == reset){
myChrono.setBase(SystemClock.elapsedRealtime());
}
}
}
Другой пост сказал попробовать убрав «Использовать хост-GPU» в менеджере AVD, но это не решило проблему либо. Другие сообщения имеют одинаковую ошибку, но более специфичны для их кода. Вся помощь приветствуется!
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_height="match_parent"
android:padding="10dp"
android:layout_width="match_parent">
<ImageView
android:id="@+id/logo1"
android:layout_marginTop="100dp"
android:layout_width="150dp"
android:layout_height="150dp"
android:layout_gravity="center_horizontal"
android:src="@drawable/swordlogocopy"/>
<Button
android:id="@+id/scanner"
android:text="Scan Barcode"
android:textColor="#DDC004"
android:background="#000000"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"/>
<Button
android:id="@+id/go2count"
android:text="Go to counter"
android:textColor="#DDC004"
android:background="#000000"
android:layout_width="100dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="30dp"
android:layout_height="wrap_content" />
И XML макет Chrono Страница:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_height="match_parent"
android:padding="10dp"
android:layout_width="match_parent">
<ImageView
android:id="@+id/logo1"
android:layout_marginTop="100dp"
android:layout_width="200dp"
android:layout_height="200dp"
android:layout_gravity="center_horizontal"
android:src="@drawable/swordlogocopy"/>
<Chronometer
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:textColor="#000000"
android:id="@+id/chronometer1" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/start"
android:layout_gravity="center_horizontal"
android:id="@+id/bStart"
android:textColor="#DDC004"
android:background="#000000"
android:layout_marginTop="50dp"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/stop"
android:layout_gravity="center_horizontal"
android:textColor="#DDC004"
android:background="#000000"
android:layout_marginTop="5dp"
android:id="@+id/bStop" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/resume"
android:layout_gravity="center_horizontal"
android:textColor="#DDC004"
android:background="#000000"
android:layout_marginTop="5dp"
android:id="@+id/bResume" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/reset"
android:layout_gravity="center_horizontal"
android:textColor="#DDC004"
android:background="#000000"
android:layout_marginTop="5dp"
android:id="@+id/bReset" />
Трудно сказать, какой из кнопок нуля без линии от LogCat или макетов XML. Но, как указывает ниже ответ. 'findViewById' возвращает' null', если он не может найти id –
Опубликуйте свой стек лет! – TheSunny