【问题标题】:Increment Int onClick增量 Int onClick
【发布时间】:2018-01-30 11:49:41
【问题描述】:

这里是新手 Android 开发者。

我正在为 Android 创建一个基本的美式橄榄球记分应用。我正在尝试使用 XML 按钮的时钟来增加变量值。

由于某种原因,当单击增量按钮时,变量没有按需要更新。我确定我缺少一些基本的东西,但似乎无法破解它。

<TextView
        android:id="@+id/home_touchdowns_var"
        android:layout_width="10dp"
        android:layout_height="24dp"
        android:layout_marginStart="80dp"
        android:layout_marginTop="16dp"
        android:text="0"
        android:textSize="16sp"
        android:textStyle="bold"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/home_touchdowns" />

 <Button
        android:id="@+id/home_touchdown_plus"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:onClick="homeTouchdownButtonPlus"
        android:text="+"
        app:layout_constraintStart_toEndOf="@+id/home_touchdowns_var"
        app:layout_constraintTop_toBottomOf="@+id/home_touchdowns" />



 package com.example.android.scorekeeper;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Display;
import android.view.View;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    int homeScore = 0;
    int homeTouchdowns = 0;
    int homeXtraPoints = 0;
    int homeFieldGoals = 0;

    int visitorScore = 0;
    int visitorTouchdowns = 0;
    int visitorXtraPoints = 0;
    int visitorFieldGoals = 0;


    public void homeTouchdownButtonPlus(View view) {
        homeTouchdowns = homeTouchdowns + 1;
    }

    public void homeTouchdownsButtonMinus(View view) {
        homeTouchdowns = homeTouchdowns - 1;
    }
}

【问题讨论】:

    标签: java android


    【解决方案1】:

    [更新]

    你的代码是对的,但没有完成,你必须调用TextView的方法setText来更新视图数据,并且你必须在你的代码中映射TextView,所以你的代码将是:

    private TextView textview_home_touchdowns; //TextView where you will see the data
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        textview_home_touchdowns = (TextView) //Mapping the TextView
                                       findViewById(R.id.home_touchdowns_var);
    }
    
    public void homeTouchdownButtonPlus(View view) {
        homeTouchdowns = homeTouchdowns + 1;
        textview_home_touchdowns.setText(homeTouchdowns+""); //Updating the TextView as String
    
    }
    
    public void homeTouchdownsButtonMinus(View view) {
        homeTouchdowns = homeTouchdowns - 1;
        textview_home_touchdowns.setText(homeTouchdowns+"");
    }
    

    感谢@Martin De Simone的指正

    【讨论】:

      【解决方案2】:

      @DigaoParceiro 是对的,你忘了调用 setText(),但是如果你按照他的方式执行它会抛出异常,因为 setText 方法需要一个字符串而不是整数,使用这个。

      public void homeTouchdownButtonPlus(View view) {
          homeTouchdowns = homeTouchdowns + 1;
          textview_home_touchdowns.setText(String.valueOf(homeTouchdowns)); //Updating the View
      }
      
      public void homeTouchdownsButtonMinus(View view) {
          homeTouchdowns = homeTouchdowns - 1;
          textview_home_touchdowns.setText(String.valueOf(homeTouchdowns));
      }
      

      【讨论】:

      • 谢谢。我尝试了这些更正,但我仍然遇到异常。 Java 9 来澄清。
      • 然后发布logcat
      猜你喜欢
      • 2019-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-18
      相关资源
      最近更新 更多