【问题标题】:Why in android java variable class is not implemented in this case? [duplicate]为什么在这种情况下没有实现android java变量类? [复制]
【发布时间】:2020-08-18 06:16:39
【问题描述】:

在这种情况下,我试图理解实例变量范围背后的逻辑:

 public class DiceActivity extends AppCompatActivity implements View.OnClickListener {

private TextView textResult;
private int max;

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

    int max = getIntent().getIntExtra("max", 0);


    TextView textTitle = (TextView) findViewById(R.id.textTitle);
    textTitle.setText(max+" sided dice");

    textResult = ((TextView) findViewById(R.id.textResult));
    textResult.setText("");
    Button buttonRoll = (Button) findViewById(R.id.buttonRoll);
    buttonRoll.setOnClickListener(this);
}

@Override
public void onClick(View v) {
    SecureRandom random = new SecureRandom();
    int result = random.nextInt(max) + 1;
    textResult.setText(String.valueOf(result));
}

}

实例变量“max”未链接到 onCreate 方法中的“max”(max 返回 0,除非我声明 max2=max 以获得正确的结果)但不知何故 textResult 运行良好,不需要声明另一个变量来获取结果。

【问题讨论】:

  • 当您在 onCreate 中声明 int max 时,您创建了一个新变量。它被称为“阴影”。这两个变量都存在并且具有相同的名称,但只有最内层范围的变量是可访问的。如果只想访问外层,可以this.max,或者干脆不重新声明。

标签: java android variables methods scope


【解决方案1】:

因为你使用了两次int

应该是这样的:

max = getIntent().getIntExtra("max", 0);

【讨论】:

    猜你喜欢
    • 2019-12-10
    • 2017-03-05
    • 1970-01-01
    • 1970-01-01
    • 2015-01-27
    • 1970-01-01
    • 1970-01-01
    • 2017-11-23
    • 2016-06-04
    相关资源
    最近更新 更多