2017-07-16 3 views
1

コードを実行しようとするとクラッシュするだけです。使用する前に:Android App Crashes - メソッドを使用して整数を表示するとき

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); 
    } 
} 

答えて

1

あなたはおそらく、この中にあなたのコードに誤りがあります:へ

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

てみチェンジ:あなたはのsetText()メソッドを使用する必要がありますのTextViewのテキストを設定するには

public void Display(int Counter) { 
     myTextView.setText(String.ValueOf(Counter)); 
} 
+0

設定したテキストでは、文字列のみを使用できます。それが間違っているのはなぜですか? –

+0

yeas、String.ValueOf()メソッドを使用して文字列に変換する必要がある数値を表示する必要がある場合。すべて順調。 –

0

を そして、このメソッドはパラメータとして文字列を受け取ります したがって を解析する必要があります文字列にint

0

上記の答えはすべて正しいです。つまり、textViewに文字列値を渡すと、正常に動作するので、テキストビューにint値を渡すのは間違っています。回答はいいえ

根本原因は何ですか? 理由は、int値を設定すると、リソースID(API参照)と見なされるため、関連するリソースを見つけようとします。ほとんどの場合、値が見つからないため、リソースに例外が見つからないことがあります。

この問題を解決する方法 値がリソースではないことがわかっている場合は、int値を文字列に変換してTextViewに設定してください。正常に動作します。

0

だけmyTextView.setText(Counter+"");

setText(int)を使用 - >このメソッドは、リソースから文字列を検索します。

関連する問題