Android Studio:尝试调用虚拟方法';void android.widget.Button.setOnClickListener(android.view.view$OnClickListener)和#x27;关于空对象
有什么需要帮忙的吗 确实有一些问题与我所问的问题类似,但我确实尝试了你提出的所有解决方案,但对我来说都不起作用 我在控制台上的错误 E/AndroidRuntime:致命异常:主 # 这里是mainActivity.javaAndroid Studio:尝试调用虚拟方法';void android.widget.Button.setOnClickListener(android.view.view$OnClickListener)和#x27;关于空对象,android,Android,有什么需要帮忙的吗 确实有一些问题与我所问的问题类似,但我确实尝试了你提出的所有解决方案,但对我来说都不起作用 我在控制台上的错误 E/AndroidRuntime:致命异常:主 # 这里是mainActivity.java public class MainActivity extends AppCompatActivity { private EditText TxtNumber=null ; private Button lblCompare; private TextView TxtR
public class MainActivity extends AppCompatActivity {
private EditText TxtNumber=null ;
private Button lblCompare;
private TextView TxtResult;
private ProgressBar pgbScole;
private TextView TxtHistory;
private int searchedValue;
private int score;
public MainActivity() {
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/* TxtNumber =(EditText) findViewById(R.id.TxtNumber); */
TxtNumber =(EditText) findViewById(R.id.TxtNumber);
lblCompare =(Button) findViewById(R.id.lblCompare);
TxtResult =(TextView) findViewById(R.id.TxtResult);
pgbScole =(ProgressBar) findViewById(R.id.pgbScole);
TxtHistory= (TextView) findViewById(R.id.TxtHistory);
lblCompare.setOnClickListener(btnCompareListner);
init();
}
private void init() {
score= 0;
searchedValue = 1+ (int)(Math.random() *100);
Log.i("DEBUG", " Valeur cherché "+searchedValue);
// réinitialisation des fields
TxtNumber.setText("");
pgbScole.setProgress(score);
TxtResult.setText("");
TxtHistory.setText("");
// Mettre le focus au field TxtNumber;
TxtNumber.requestFocus();
}
private View.OnClickListener btnCompareListner;
{
btnCompareListner = new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.i("Debug", "Bouton cliqué ");
String txtNumber = TxtNumber.getText().toString();
if (txtNumber.equals("")) return;
TxtHistory.append(TxtNumber +"\r\n");
pgbScole.incrementProgressBy(1);
score++;
int enteredValue = Integer.parseInt(txtNumber);
if (enteredValue == searchedValue) {
congratulations();
} else if (enteredValue < searchedValue) {
TxtResult.setText(R.string.strGreater);
}else{
TxtResult.setText(R.string.strLower);
}
TxtNumber.setText("");
TxtNumber.requestFocus();
}
};
}
private void congratulations() {
TxtResult.setText(R.string.congra);
AlertDialog retryAlert= new AlertDialog.Builder(this).create();
retryAlert.setTitle(R.string.app_name);
retryAlert.setMessage(getString( R.string.strMessage,score));
retryAlert.setButton(AlertDialog.BUTTON_POSITIVE, getString(R.string.strYes), new AlertDialog.OnClickListener(){
@Override
public void onClick(DialogInterface dialogInterface, int i) {
init();
}
});
retryAlert.setButton(AlertDialog.BUTTON_NEGATIVE, getString(R.string.strNo), new AlertDialog.OnClickListener(){
@Override
public void onClick(DialogInterface dialogInterface, int i) {
finish();
}
});
retryAlert.show();
}
public类MainActivity扩展了AppCompatActivity{
私有EditText TxtNumber=null;
专用按钮LBL比较;
私有文本视图TxtResult;
私人ProgressBar pgbScole;
私有文本视图TxtHistory;
私有整数搜索值;
个人智力得分;
公共活动(){
}
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/*TxtNumber=(EditText)findViewById(R.id.TxtNumber)*/
TxtNumber=(EditText)findViewById(R.id.TxtNumber);
lblCompare=(按钮)findViewById(R.id.lblCompare);
TxtResult=(TextView)findViewById(R.id.TxtResult);
pgbScole=(ProgressBar)findviewbyd(R.id.pgbScole);
TxtHistory=(TextView)findViewById(R.id.TxtHistory);
lblCompare.setOnClickListener(BTNCompareListener);
init();
}
私有void init(){
得分=0;
searchedValue=1+(int)(Math.random()*100);
Log.i(“调试”、“Valeur cherché”+搜索值);
//字段初始化
TxtNumber.setText(“”);
pgbScole.setProgress(分数);
TxtResult.setText(“”);
TxtHistory.setText(“”);
//Mettre le focus au field TxtNumber;
TxtNumber.requestFocus();
}
private View.OnClickListener BtnCompareListener;
{
btnCompareListner=newview.OnClickListener(){
@凌驾
公共void onClick(视图){
Log.i(“Debug”、“Bouton cliqué”);
字符串txtNumber=txtNumber.getText().toString();
if(txtNumber.equals(“”)返回;
TxtHistory.append(TxtNumber+“\r\n”);
pgbScole.incrementProgressBy(1);
分数++;
int enteredValue=Integer.parseInt(txtNumber);
如果(enteredValue==searchedValue){
祝贺你();
}else if(输入值<搜索值){
setText(R.string.strGreater);
}否则{
txtreult.setText(R.string.strLower);
}
TxtNumber.setText(“”);
TxtNumber.requestFocus();
}
};
}
二等兵{
setText(R.string.congla);
AlertDialog retryAlert=新建AlertDialog.Builder(this.create();
retryAlert.setTitle(R.string.app_name);
setMessage(getString(R.string.strMessage,score));
retryAlert.setButton(AlertDialog.BUTTON_正数、getString(R.string.strYes)、new AlertDialog.OnClickListener(){
@凌驾
公共void onClick(DialogInterface,inti){
init();
}
});
retryAlert.setButton(AlertDialog.BUTTON_负值、getString(R.string.strNo)、new AlertDialog.OnClickListener(){
@凌驾
公共void onClick(DialogInterface,inti){
完成();
}
});
retryAlert.show();
}
这是“activity_main.xml”
确保您没有其他同名的
xml
,并且您正在使用另一个xml
一个非常相似的场景是,当您有两个布局以不同的配置时,例如,
横向
和纵向
,其中一个有视图
,另一个没有视图谢谢您的回答,是的,我有两个xml文件,一个名为activity_main.xml,另一个名为activity_name.xml(v21)但是里面有相同的代码。您有什么建议吗?您有2xactivity\u main
?或1xmain
和其他1xname
?只有一个,但它会自动复制,并使用相同的名称“activity\u main.xml”和(v21)试着用一个布局!你需要两个布局?我想这并不是因为你的解决方案,它可以解决第一个问题,但是出现了第二个问题,这就是现在的错误“android.support.constraint.Guideline无法转换到android.view.ViewGroup,原因是:java.lang.ClassCastException:android.support.constraint.Guideline无法转换对于android.view.ViewGroup'来说,错误似乎是在确切地告诉您出了什么问题-您正在尝试对未定义的内容调用setOnClickListener
方法(在您的示例中是lblCompare
)。如果可能,请将调试器设置为lblCompare=(按钮)findViewById(R.id.lblCompare);
并查看为什么找不到R.id.lblCompare
视图。
public class MainActivity extends AppCompatActivity {
private EditText TxtNumber=null ;
private Button lblCompare;
private TextView TxtResult;
private ProgressBar pgbScole;
private TextView TxtHistory;
private int searchedValue;
private int score;
public MainActivity() {
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/* TxtNumber =(EditText) findViewById(R.id.TxtNumber); */
TxtNumber =(EditText) findViewById(R.id.TxtNumber);
lblCompare =(Button) findViewById(R.id.lblCompare);
TxtResult =(TextView) findViewById(R.id.TxtResult);
pgbScole =(ProgressBar) findViewById(R.id.pgbScole);
TxtHistory= (TextView) findViewById(R.id.TxtHistory);
lblCompare.setOnClickListener(btnCompareListner);
init();
}
private void init() {
score= 0;
searchedValue = 1+ (int)(Math.random() *100);
Log.i("DEBUG", " Valeur cherché "+searchedValue);
// réinitialisation des fields
TxtNumber.setText("");
pgbScole.setProgress(score);
TxtResult.setText("");
TxtHistory.setText("");
// Mettre le focus au field TxtNumber;
TxtNumber.requestFocus();
}
private View.OnClickListener btnCompareListner;
{
btnCompareListner = new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.i("Debug", "Bouton cliqué ");
String txtNumber = TxtNumber.getText().toString();
if (txtNumber.equals("")) return;
TxtHistory.append(TxtNumber +"\r\n");
pgbScole.incrementProgressBy(1);
score++;
int enteredValue = Integer.parseInt(txtNumber);
if (enteredValue == searchedValue) {
congratulations();
} else if (enteredValue < searchedValue) {
TxtResult.setText(R.string.strGreater);
}else{
TxtResult.setText(R.string.strLower);
}
TxtNumber.setText("");
TxtNumber.requestFocus();
}
};
}
private void congratulations() {
TxtResult.setText(R.string.congra);
AlertDialog retryAlert= new AlertDialog.Builder(this).create();
retryAlert.setTitle(R.string.app_name);
retryAlert.setMessage(getString( R.string.strMessage,score));
retryAlert.setButton(AlertDialog.BUTTON_POSITIVE, getString(R.string.strYes), new AlertDialog.OnClickListener(){
@Override
public void onClick(DialogInterface dialogInterface, int i) {
init();
}
});
retryAlert.setButton(AlertDialog.BUTTON_NEGATIVE, getString(R.string.strNo), new AlertDialog.OnClickListener(){
@Override
public void onClick(DialogInterface dialogInterface, int i) {
finish();
}
});
retryAlert.show();
}
<?xml version="1.0" encoding="utf-8"?><android.support.constraint.ConstraintLayout 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=".MainActivity">
<android.support.constraint.Guideline
android:id="@+id/guideline3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="281dp"
android:orientation="vertical"
app:layout_constraintBottom_toTopOf="@+id/pgbScole"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintGuide_end="-44dp"
app:layout_constraintTop_toTopOf="parent">
<ProgressBar
android:id="@+id/pgbScole"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="448dp"
android:layout_height="14dp"
android:layout_marginTop="180dp"
android:max="10"
android:progress="5"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.68"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/lbltitre"
style="@android:style/Animation"
android:layout_width="0dp"
android:layout_height="42dp"
android:layout_marginBottom="8dp"
android:layout_marginEnd="29dp"
android:layout_marginLeft="29dp"
android:layout_marginRight="29dp"
android:layout_marginStart="29dp"
android:text="@string/lblTitle"
android:textAppearance="@android:style/TextAppearance.Large"
android:textColor="@android:color/background_dark"
android:textColorHighlight="@android:color/background_dark"
android:textColorHint="@android:color/background_dark"
android:textColorLink="@android:color/holo_purple"
app:layout_constraintBottom_toTopOf="@+id/TxtNumber"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="1.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="1.0"
tools:height="?android:attr/lightRadius"
tools:textCursorDrawable="@android:color/holo_blue_dark"
tools:textSize="18sp" />
<EditText
android:id="@+id/TxtNumber"
android:layout_width="0dp"
android:layout_height="43dp"
android:layout_marginBottom="8dp"
android:layout_marginEnd="8dp"
android:layout_marginLeft="28dp"
android:layout_marginRight="8dp"
android:layout_marginStart="28dp"
android:layout_marginTop="56dp"
android:ems="10"
android:inputType="numberSigned"
app:layout_constraintBottom_toTopOf="@+id/TxtResult"
app:layout_constraintEnd_toStartOf="@+id/lblCompare"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="UnknownId" />
<Button
android:id="@+id/lblCompare"
android:layout_width="159dp"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginEnd="28dp"
android:layout_marginRight="28dp"
android:layout_marginTop="64dp"
android:text="@string/lblComapre"
app:layout_constraintBottom_toBottomOf="@+id/TxtResult"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.036" />
<TextView
android:id="@+id/TxtHistory"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginBottom="24dp"
android:layout_marginEnd="12dp"
android:layout_marginLeft="12dp"
android:layout_marginRight="12dp"
android:layout_marginStart="12dp"
android:layout_marginTop="8dp"
android:background="@color/colorAccent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/pgbScole" />
<EditText
android:id="@+id/TxtResult"
android:layout_width="299dp"
android:layout_height="47dp"
android:layout_marginBottom="4dp"
android:layout_marginEnd="56dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="56dp"
android:layout_marginStart="8dp"
android:ems="10"
android:inputType="textPersonName"
app:layout_constraintBottom_toTopOf="@+id/pgbScole"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="@+id/guideline3" />
</android.support.constraint.Guideline>