提问人:Nick_struggles91 提问时间:8/14/2022 最后编辑:Nick_struggles91 更新时间:8/15/2022 访问量:318
Android Studio 无法启动 Activity,无法强制转换为 android.view.View$OnClickListener
Android Studio Unable to Start Activity, Cannot cast to android.view.View$OnClickListener
问:
我们正在努力在我的在线课程中创建一个基本应用程序,我一直遇到这个问题,其中说明让我们键入一个带有 onClick @Override的方法。我能够从A.S.本身获得一种使用自动填充帮助的方法,但下一个方法不会自行解决。我在这门课上也遇到了其他问题,我知道这些说明已经有几年了。现在可能已经过时了?
我对 Android Java 和编码很陌生。该应用程序似乎试图错误地使用 onClick 方法。我将发布我正在处理的整个班级,因为我不确定问题到底在哪里。
package com.test.firstandroidapp;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.SeekBar;
import android.widget.Spinner;
import android.widget.Switch;
import android.widget.TextView;
public class InformationPageActivity extends AppCompatActivity {
Button btnSave;
Spinner spnSeason;
SeekBar skbTemp;
TextView lblSeekValue;
Switch swchAllergy;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_information_page);
spnSeason = (Spinner) findViewById(R.id.spnSeason);
skbTemp = (SeekBar) findViewById(R.id.skbTemp);
swchAllergy = (Switch) findViewById(R.id.swchAllergy);
lblSeekValue = (TextView) findViewById(R.id.lblSeekValue);
btnSave = (Button) findViewById(R.id.btnSave);
btnSave.setOnClickListener((View.OnClickListener) this);
skbTemp.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
String display = String.valueOf(progress);
lblSeekValue.setText(display);
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
}
@Override
public void onClick(View v) {
String season, allergies;
int temperature;
season = spnSeason.getSelectedItem().toString();
temperature=skbTemp.getProgress();
allergies = (String) (swchAllergy.isChecked() ? swchAllergy.getTextOn() : swchAllergy.getTextOff()); //if the switch is on then the user has allergies
Intent intent = new Intent(InformationPageActivity.this, InformationResultsActivity.class); //pass information to the results activity
intent.putExtra("season", season);
intent.putExtra("temperature", temperature);
intent.putExtra("allergies", allergies);
this.startActivity(intent);
}
}
这是转到我尝试打开的视图的主菜单类部分,onclicklistener 位于 onCreate 方法中,goInfo 是它自己的方法
Button btnInfo = (Button) findViewById(R.id.btnInfo);
btnInfo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
goInfo();
}
}
);
}
private void goInfo() {
Intent intent = new Intent(MainMenuActivity.this, InformationPageActivity.class);
this.startActivity(intent);
}
答:
0赞
Nick_struggles91
8/15/2022
#1
我能够找到问题所在。我需要向 onclicklistener 的类添加一个 implements 语句。我正在回答我自己的问题,以防将来有人遇到同样的错误。这是我所做的。
我有问题的班级是
public class InformationPageActivity extends AppCompatActivity {
这会导致错误“java.lang.RuntimeException:无法启动活动 ComponentInfo{com.test.firstandroidapp/com.test.firstandroidapp.InformationPageActivity}:java.lang.ClassCastException:com.test.firstandroidapp.InformationPageActivity 无法转换为 android.view.View$OnClickListener”
我通过修复添加工具的类解决了这个问题
public class InformationPageActivity extends AppCompatActivity implements View.OnClickListener {
评论