我已经坚持了很久了。在Android Studio中单击一个按钮时,我希望一个整数(称为PageNo)的值增加1。我希望根据该值,在TextView框中显示不同的文本(Act2PageNo)。例如,如果PageNo = 2,则Act2PageNo将给出特定产品的选项2的描述。 但是,它无法在While循环中识别我的代码,即我的'while(PageNo = 1)'部分提供了一个整数,但需要一个布尔值。还提到不兼容的类型。
我的代码如下:感谢所有帮助。
package com.example.wma76143.testappactivitychange;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.TextureView;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import javax.xml.transform.Result;
public class Activity2 extends AppCompatActivity {
private TextView Act2Title;
Button btnnNext;
Button btnPrevious;
private TextView Act2PageNo;
private int PageNo = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_2);
Act2Title = (TextView) findViewById(R.id.textView);
Act2PageNo = (TextView) findViewById(R.id.textPageNo);
btnnNext = (Button) findViewById(R.id.buttonNext);
btnPrevious = (Button) findViewById(R.id.buttonPrevious);
btnnNext.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view){
PageNo++;
Gotonextpage();}
});
}
public void Gotonextpage() {
while (PageNo=1){
Act2PageNo.setText("Text will be put here to describe Option 1");
}
while (PageNo=2){
Act2PageNo.setText("Text will be put here to describe Option 2");
}
while (PageNo=3){
Act2PageNo.setText("Text will be put here to describe Option 3");
}
}
}
答案 0 :(得分:2)
使用表达式PageNo==1
进行比较。使用PageNo=1
将返回1,其类型为int
。 while
表达式需要一个布尔条件来求值。因此,请使用PageNo==1
(它是相等运算符)并返回true
类型的false
或boolean
。
答案 1 :(得分:2)
您只需要使用相等运算符==
而不是赋值运算符=
。这将根据需要将您的表达式评估为布尔值:
public void Gotonextpage() {
while (PageNo == 1){
Act2PageNo.setText("Text will be put here to describe Option 1");
}
while (PageNo == 2){
Act2PageNo.setText("Text will be put here to describe Option 2");
}
while (PageNo == 3){
Act2PageNo.setText("Text will be put here to describe Option 3");
}
}
话虽这么说-我认为您想要的是if
语句,因为while
块将一直循环直到条件为假,在这种情况下-永远循环。所以:
public void Gotonextpage() {
if (PageNo == 1) {
Act2PageNo.setText("Text will be put here to describe Option 1");
}
if (PageNo == 2) {
Act2PageNo.setText("Text will be put here to describe Option 2");
}
if (PageNo == 3) {
Act2PageNo.setText("Text will be put here to describe Option 3");
}
}
答案 2 :(得分:1)
您需要再添加一个等号
喜欢
while(PageNo==1){
// Do something here
}
答案 3 :(得分:0)
如您的错误所述,while循环接受布尔值,而不是整数或任何其他值。 在您的代码中,您可以使用!=,==,> =,<=值来检查条件(因为while循环用于条件检查)。 除了上面的代码,您可以进行如下所示的更改。
public void Gotonextpage() {
while (PageNo == 1){
Act2PageNo.setText("Text will be put here to describe Option 1");
}
while (PageNo == 2){
Act2PageNo.setText("Text will be put here to describe Option 2");
}
while (PageNo == 3){
Act2PageNo.setText("Text will be put here to describe Option 3");
}
}
请使用while循环的布尔条件更新代码。