【问题标题】:Android studio if statement condition met but program won't enter it [duplicate]Android Studio if语句条件满足但程序不会进入它[重复]
【发布时间】:2017-04-02 13:47:09
【问题描述】:

所以我试图在 android studio 中实现一个简单的类,它以微调器的形式接受用户输入并相应地更改文本的颜色。但是,即使条件已经满足,从调试行可以看出,程序不会执行 if 语句的内容。 debugging line

'import android.content.Intent;
import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;

public class Colour extends AppCompatActivity {

TextView tv;
Spinner mySpinner;
ArrayAdapter<CharSequence> adapter;
public static final String EXTRA_MESSAGE = "message";
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_colour);
    Intent intent = getIntent();
    String messageText = intent.getStringExtra(EXTRA_MESSAGE);
    tv = (TextView)findViewById(R.id.message);
    tv.setText(messageText);
    mySpinner = (Spinner) findViewById(R.id.spinner);
    adapter = ArrayAdapter.createFromResource(this,R.array.colours,android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    mySpinner.setAdapter(adapter);
    mySpinner.setOnItemSelectedListener(new     AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            Toast.makeText(getBaseContext(), parent.getItemIdAtPosition(position)+ " selected",Toast.LENGTH_LONG).show();
        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {

        }
    });

}

public void change(View v){

    String text = mySpinner.getSelectedItem().toString();

    if(text == "Red"){
        tv.setTextColor(Color.RED);
    }
    if(text == "Blue"){
        tv.setTextColor(Color.BLUE);
    }
    if(text == "Green"){
        tv.setTextColor(Color.GREEN);
    }
}'


 '<TextView
    android:textColor="#000000"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/message" />

<Spinner
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:entries="@array/colours"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="16dp"
    android:id="@+id/spinner" />

<Button
    android:text="HOME"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/button"
    android:onClick="home"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:layout_marginBottom="52dp" />

<Button
    android:text="changeColour"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/button4"
    android:layout_above="@+id/button"
    android:layout_alignStart="@+id/button"
    android:layout_marginBottom="101dp"
    android:onClick="change" />'

【问题讨论】:

    标签: java android string-comparison


    【解决方案1】:

    答案是

    if(text.equals("Red"))

    因为文本是 String 类型的对象,所以它不是原始类型

    可以使用 == 比较原始类型,但不能使用引用类型

    【讨论】:

      猜你喜欢
      • 2021-12-16
      • 2015-08-08
      • 1970-01-01
      • 2012-12-17
      • 1970-01-01
      • 2016-09-12
      • 1970-01-01
      • 2012-07-06
      • 1970-01-01
      相关资源
      最近更新 更多