我有一个主要的活动,我有一个布局膨胀。 我在活动中有一个文本视图(textView),我想从另一个名为'Util.java'的类中更新(这个类没有扩展任何东西,它只是一个库类),我在那里编写了项目常用的方法可用性)。
现在接收广播后,我通过使用'Util.setLoadingText(R.string.loadingText_creating_device);'
调用Util.java中的方法来更新'textView'的文本。 public static void setLoadingText(int resId) {
if (!Util.isNull(loadingText)) {
Log.d(Util.TAG, LOG_LABEL + "SET TEXT CALLED:SHOW LOADING SCREEN" );
loadingText.setText(resId);
}
}
在调用上面的方法之前,我在主活动的onCreate中调用'Util.init(this)'。它是
的代码 public static void init(Activity activity) {
activity.setContentView(R.layout.loading_screen);
Log.d(Util.TAG, LOG_LABEL + "INIT CALLED:SHOW LOADING SCREEN" );
loadingText = (TextView) activity.findViewById(R.id.loadingScreenTextView);
}
没有编译错误,但
loadingText.setText(resId);
不会更新文字。 任何人都可以指出我哪里错了吗?
答案 0 :(得分:2)
除了ui线程之外你不能在任何地方更新ui线程上的东西。你需要使用它。在哪个mAct是主要活动但是你必须将它传递给另一个类,所以它有访问它,因为它不能成为静态参考
public static void updateText(Activity act, resID)
{
loadingText = (TextView) activity.findViewById(R.id.loadingScreenTextView);
act.runOnUiThread(new Runnable()
{
public void run()
{
loadingText.setText(resID);
}
});
}
答案 1 :(得分:1)
尝试实现界面。在课程Util.java
中写道:
public interface onSomeEventListener {
public void someEvent(String s);
}
onSomeEventListener someEventListener;
和
someEventListener.someEvent("Test text to...");
在活动中:
public class MainActivity extends Activity implements onSomeEventListener{
和
@Override
public void someEvent(String s) {
loadingText.setText(resId);
}
答案 2 :(得分:0)
来自非活动类
//call class name
VerifyMobile Sms = new VerifyMobile();
Sms.recivedSms(s);
来自活动类VerifyMobile.java
static EditText verify_numbertext;
verify_numbertext = (EditText)findViewById(R.id.verify_numbertext);
在editText
中设置文本的功能public static void recivedSms(String message)
{
verify_numbertext.setText(message);
}