2017-03-05 78 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