3

デフォルトのテキスト値で始まる TextView があり、ユーザーの操作に基づいて、ボタンがクリックされたときに TextView のテキストをコードで変更する必要があります。十分に単純に思えますが、問題が発生しています。

現在、ユーザーがテキストの変更をトリガーする送信ボタンをクリックすると、単にテキスト値を変更するのではなく、新しいテキストが元の TextView の下の画面に追加されます。あたかも新しい TextView を追加しているかのようです。

これを行うコードは次のとおりです。

lblSlogan.Invalidate();
lblSlogan.SetText(currentSlogan.Slogan, TextView.BufferType.Normal);

私もこの方法で試してみましたが、運が悪かったです:

lblSlogan.Invalidate();
lblSlogan.Text = currentSlogan.Slogan;

lblSlogan は TextView です。何か不足していますか?私もinvalidate()なしで試してみましたが、それでも何も変わりませんでした。

ありがとう。

- 編集 -

Xamarin で C# を使用していることに注意してください。Java ではありません。ボタンのクリック方法は次のとおりです。ここで、TextView の変更が行われます。

btnOk.Click += delegate(object sender, EventArgs e)
      {
            if (answerBox.Text.ToLower() == currentSlogan.Company.ToLower())
            {
                // correct answer
                currentUserScore += currentSlogan.Points;
                currentSlogan.Answered = true;
                DatabaseBuffer.MarkSloganAnsweredAndUpdateScore(currentSlogan, currentUserScore);
                currentSlogan = DatabaseBuffer.GetNextUnansweredSlogan(currentSlogan.ID);
            }

            if (currentUserScore >= pointsToPass)
            {
                // user has beaten level
            }
            else
            {
                lblSlogan.SetText(currentSlogan.Slogan, TextView.BufferType.Normal);
                answerBox.Text = "";
            }
        };
4

5 に答える 5

1

あなたの問題はこれだと思います:

answerBox.Text.ToLower() == currentSlogan.Company.ToLower()

「==」ではなく「等しい」を使用する必要があります。

(answerBox.Text.ToLower()).Equals( currentSlogan.Company.ToLower())
于 2013-09-30T01:21:10.500 に答える
1

ここでいくつかのポイント。

個人的には、Xamarin が提供する組み込みの抽象メソッドを使用しています。彼らは私にはるかに一貫した結果を与える傾向があります. 新しい値を Textview の .Text プロパティに割り当てるだけです。IE

textView.Text = newValue;

C# では、.Equals 演算子を使用して文字列を比較する必要はありません。これは厳密に Java の要件です。この [リンク] を参照してください ( == に対して String.Equals を使用する理由は? )。

于 2013-10-01T05:28:41.567 に答える
0

リスナーをボタンに割り当て、そのリスナーに setText() メソッド (または追加の場合は appendText() ..) でテキストを追加します。

findViewById(R.id.button2).setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            text.setText("This is new text");
        }
    });
于 2013-09-29T16:46:43.533 に答える
0

ここで、動的に表示するテキストを追加できます。

var aLabel = new TextView (this);
aLabel.Text = "Hello Text!!!";
aLabel.SetTextSize (Android.Util.ComplexUnitType.Dip, 15f);
RelativeLayout ll = new RelativeLayout(this);
ll.AddView(aLabel);
于 2014-03-26T12:38:28.023 に答える