Android App崩溃 - 使用方法显示整数时

时间:2017-07-16 19:07:49

标签: java android

当我尝试运行代码时,它只会崩溃。在我使用之前:

myTextView.setText(Counter)  

哪个有效,但现在当我尝试使其变得更容易和更有效时,它无法使用方法。为什么?

我正在尝试制作一个大亨应用程序,所以我想使用一种方法,以便更容易显示用户在玩游戏时的金额。在该方法中,进行计算会更加清晰。

package com.example.navjeevenmann.mytycoon;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity 
{
    private Button myButton;
    private int Counter = 0;
    private Button myButton2;
    private TextView myTextView;

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

        myButton = (Button) findViewById(R.id.button);
        myButton2 = (Button) findViewById(R.id.button2);
        myTextView = (TextView) findViewById(R.id.textView);

        myButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Counter = Counter(Counter);
                Display(Counter);
            }
        });

        myButton2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                startActivity(new Intent(MainActivity.this, SecondActivity.class));
            }
        });

        Bundle store = new Bundle();
        store.putInt("count", Counter);
    }

    public int Counter(int Counter) {
        Counter++;
        return Counter;
    }

    public void Display(int Counter) {
        myTextView.setText(Counter);
    }
}

4 个答案:

答案 0 :(得分:1)

你的代码中可能有错误:

<!doctype html>
<html ⚡>
  <head>
    <meta charset="utf-8">
    <script async src="https://cdn.ampproject.org/v0.js"></script>
    <link rel="canonical" href="http://localhost/amp-bind.html" />
    <title>AMP bind test</title>
    <meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1">
    <style amp-boilerplate>body{-webkit-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-moz-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-ms-animation:-amp-start 8s steps(1,end) 0s 1 normal both;animation:-amp-start 8s steps(1,end) 0s 1 normal both}@-webkit-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-moz-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-ms-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-o-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}</style><noscript><style amp-boilerplate>body{-webkit-animation:none;-moz-animation:none;-ms-animation:none;animation:none}</style></noscript>
    <script async custom-element="amp-bind" src="https://cdn.ampproject.org/v0/amp-bind-0.1.js"></script>
  </head>
  <body class="main">
    <h3>amp-bind example</h3>
    <p [text]="'Hello '+username">Hello World</p>
    <button on="tap:AMP.setState({username: 'rodders'})">Say Hello</button>
  </body>
</html>

尝试更改为:

public void Display(int Counter) {
    myTextView.setText(Counter);
}

答案 1 :(得分:0)

要在TextView上设置文本,您必须使用setText()方法 此方法将字符串作为参数 所以 您必须将 int解析为字符串

答案 2 :(得分:0)

首先,答案是正确的,如果我们给textView赋予String值它会正常工作,所以给文本视图赋予int值是错误的。答案是

那么根本原因是什么? 原因是,如果设置int值,它将被视为资源ID(请参阅API),因此它将尝试查找相关资源。大多数情况下它不会找到任何值,它会给资源找不到异常。

我们如何解决这个问题, 如果您确定该值不是资源,只需将int值转换为string,并将其设置为TextView即可正常工作。

答案 3 :(得分:0)

只需使用myTextView.setText(Counter+"");

setText(int) - &gt;此方法从资源中查找字符串。