【问题标题】:Change textViews if equal to each other如果彼此相等,则更改 textViews
【发布时间】:2012-09-18 05:21:30
【问题描述】:

所以我很早就问了一个关于如何通过单击按钮来更改文本视图的问题,效果很好!

所以现在...如果我有 1 个 textview 作为计数器,另一个作为限制,我将如何做到这一点,并且当计数器达到限制时,textview1 将回到 0 并且限制会增加。

我试过了:

If (textViewCounter==textViewLimit);
textViewCounter.setText(0);
textViewLimit.setText(textViewLimit.getText().toString() + 100);

但这不起作用... 我还能怎么做?

编辑我的问题只是一个例子。我打算用它来操纵我的价值观。但这就是一切:问题代码位于 btnBattle onClick 的底部

package com.example.intent_buttontests;

import android.app.Activity;
import android.content.Intent;
import android.content.res.ColorStateList;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Spinner;
import android.widget.TextView;

public class PlayScreen extends Activity {

private int i = 0;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.play_screen);


    String Name = getIntent().getStringExtra("strName");
    TextView textview5 = (TextView) findViewById(R.id.textView5);
    textview5.setText(Name);
    textview5.setTextColor(Color.CYAN);

    String Race = getIntent().getStringExtra("strRace");
    TextView textViewStrRace = (TextView) findViewById(R.id.textViewStrRace);
    textViewStrRace.setText(Race);

    String Class = getIntent().getStringExtra("strClass");
    TextView textViewStrClass = (TextView) findViewById(R.id.TextViewStrClass);
    textViewStrClass.setText(Class);

    String Alliance = getIntent().getStringExtra("strAlliance");
    TextView textViewStrAlliance = (TextView) findViewById(R.id.textViewStrAlliance);
    textViewStrAlliance.setText(Alliance);

    Button btnInventory = (Button) findViewById(R.id.button1);
    btnInventory.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            Intent intent = new Intent(v.getContext(), Inventory.class);
            startActivityForResult(intent, 0);

        }
    });

    Button btnEquipment = (Button) findViewById(R.id.button2);
    btnEquipment.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            Intent intent = new Intent(v.getContext(), Equipment.class);
            startActivityForResult(intent, 0);

        }
    });

    Button btnStats = (Button) findViewById(R.id.button3);
    btnStats.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            Intent intent = new Intent(v.getContext(), Statistics.class);
            startActivityForResult(intent, 0);

        }
    });

    Button btnShop = (Button) findViewById(R.id.Button01);
    btnShop.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            Intent intent = new Intent(v.getContext(), Shop.class);
            startActivityForResult(intent, 0);

        }
    });

    Button btnCrafting = (Button) findViewById(R.id.button4);
    btnCrafting.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            Intent intent = new Intent(v.getContext(), Crafting.class);
            startActivityForResult(intent, 0);

        }
    });

    Button btnClassTraining = (Button) findViewById(R.id.button5);
    btnClassTraining.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            Intent intent = new Intent(v.getContext(), ClassTraining.class);
            startActivityForResult(intent, 0);

        }
    });

    Button btnBattle = (Button) findViewById(R.id.btnBattle);
    btnBattle.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method
            // Definitions

            Spinner spinnerMonsters = (Spinner) findViewById(R.id.spinnerMonsters);
            TextView textViewBattleResults = (TextView) findViewById(R.id.textViewBattleResults);
            TextView textViewXPValue = (TextView) findViewById(R.id.textViewXPValue);
            TextView textViewXpNextLevel = (TextView) findViewById(R.id.textViewXpNextLevel);

            // When XP limit is reached, increases by 100 and sets back to 0

            if (textViewXPValue.getText().toString().equals(textViewXpNextLevel.getText().toString())); {
            textViewXPValue.setText("0");
            int newLimit = Integer.parseInt(textViewXpNextLevel.getText().toString()) + 100;
            textViewXpNextLevel.setText(newLimit+"");

            }


            if (spinnerMonsters.getItemAtPosition(0).toString().equals("(0) Training Dummy")); {
            textViewBattleResults.setText("You have killed Training Dummy for 10 experience points!");
            i = i+10;
            textViewXPValue.setText(String.valueOf(i));
            }

        }

    });




}

}

【问题讨论】:

  • 所选代码是我唯一有问题的地方。我没有收到错误。代码只是在错误的时间添加东西

标签: android android-layout android-intent android-widget


【解决方案1】:

而不仅仅是比较两个文本视图的文本(字符串),

更新:

If (textViewCounter.getText().toString().equals(textViewLimit.getText().toString()));
{
 textViewCounter.setText(0);
 int newLimit = Integer.parseInt(textViewLimit.getText().toString()) + 100;
 textViewLimit.setText(newLimit+"");
}

【讨论】:

  • 好的,我这样做了,但是每次我点击按钮而不是在当前数字上加 100,它会这样写: 100100 就像,将它添加到字符串的末尾而不是改变它?
  • 我该怎么做...?抱歉,我在这方面还很新
  • 也试过了,每次按下按钮都会增加 textViewCounter 10 和 textViewLimit 100
  • 这是因为您在按钮点击中的第二个 if 条件始终为真。所以它将始终执行。如果条件将第一个是第二个,第二个是第一个,则只需交换两者。
  • 好吧,这也不起作用,因为现在单击时它不会添加 10,但它仍然会在限制中添加 100...
【解决方案2】:

当然不行,不能直接比较textView的内容。你应该做的是创建一个字符串来保存文本视图的内容。

String stextViewCounter = textViewCounter.getText().toString();
String stextViewLimit = textViewLimit.getText().toString();

if(stextViewCounter.equal(stextViewLimit)){
     textViewCounter.setText(0);
     textViewLimit.setText(stextViewLimit + 100);
}

除非您使用整数,否则您必须使用 parse int 对其进行解析

【讨论】:

    【解决方案3】:
    If (textViewCounter.getText().toString().equals(textViewLimit.getText().toString()));
    {
    textViewCounter.setText("");
    int n = Integer.parseInt(textViewLimit.getText().toString()) + 100;
    textViewLimit.setText("" + n);
    }
    

    【讨论】:

    • 好的,我这样做了,现在每次单击按钮时,textViewCounter 增加 10,textViewLimit 增加 100。?所以这不起作用
    • 我认为我们需要删除 ;最后
    【解决方案4】:

    试试这个

    If (textViewCounter.getText().toString().equals(textViewLimit.getText().toString()))
    textViewCounter.setText(0);
    textViewLimit.setText(textViewLimit.getText().toString() + 100);
    

    这可能对你有帮助

    【讨论】:

    • 使用 == 直接比较字符串在 Java 中不起作用(它比较的是引用,而不是值),您需要改用 .equals 方法。
    猜你喜欢
    • 2015-03-25
    • 2014-05-09
    • 1970-01-01
    • 2017-10-22
    • 2011-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多