2017-07-16 22 views
1

當我嘗試運行代碼時,它只是崩潰。在我使用之前: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); 
    } 
} 

回答

1

你在你的代碼中的錯誤可能是這樣的:

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

嘗試改變:

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

在設置的文本中,你只能使用一個字符串。那是爲什麼它錯了? –

+0

是的,如果你需要顯示你需要使用String.ValueOf()方法轉換爲字符串的數字。一切安好。 –

0

設置文本上的TextView,你必須使用setText()方法 並且此方法以字符串作爲參數 因此 您必須解析int到字符串

0

以上所有答案都是正確的,如果我們將String值賦予textView,它將正常工作,因此給文本視圖賦予int值是錯誤的。答案是

那麼究竟是什麼根源呢? 原因是,如果你設置了int值,它會認爲是資源id(見API),所以它會試着找到相關的資源。大多數它不會找到任何價值,它會給資源沒有發現異常。

我們如何解決這個問題, 如果您確定該值不是資源,只需將int值轉換爲字符串,並將其設置爲TextView,即可正常工作。

0

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

setText(int) - >這種方法從資源查找字符串。