2017-03-05 71 views
1

我想用一種方法來改變我的TextView,但我的代碼不工作。從方法(安卓)Chaning TextView

public void change(){ 
    TextView textView = (TextView) findViewById(R.id.textfortune); 
    textView.setText("Test"); 
} 

但TextView只消失。
如果我直接在ClickListner中進行更改,它可以正常工作,但如果Clicklistner啓動的方法內部沒有相同的代碼。 有人可以解釋爲什麼嗎?或者如何解決這個問題?

的完整代碼:

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





    final TextView textView = (TextView) findViewById(R.id.textfortune); 

    textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, (float)0.2*width); 

    textView.setText("Fortune"); 
    textView.setDrawingCacheEnabled(true); 






    RelativeLayout root = (RelativeLayout) findViewById(R.id.content_main); 
    root.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      change(); 

     } 
    }); 
return true; 

} 

後點擊TextView的消失

+1

add ur full code!並添加更多的細節,你想要做什麼 –

+2

這段代碼應該可以正常工作...你錯過了[mcve] –

回答

0

試試這個

public void change(View v){ 
    TextView textView = (TextView) findViewById(R.id.textfortune); 
    textView.setText("Test"); 
} 

在您的佈局XML在Button

android:onClick="change" 
設置例如 onClick屬性

它應該工作。

+0

沒有遺憾的文本仍然消失,但我不想用按鈕更改它應該改變與點擊屏幕以及這個工程,但只有當我在Clicklist中寫代碼。不是如果我從那裏開始使用相同代碼的方法。 – holzi33

+0

你可以把android:onClick =「change」放在你的UI,Button,TextView,LinearLayout等的每個元素上。 – Kacper

+0

我發現了一種避免它的方法, – holzi33