2

我有一个主要的活动,我有一个膨胀的布局。我在活动中有一个文本视图 (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);

不更新文本。谁能指出我哪里出错了?

4

3 回答 3

4

除了 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);

                     }

                });
}
于 2013-09-03T10:53:38.607 回答
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);
}
于 2013-09-03T11:35:24.273 回答
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);

     }
于 2015-08-11T19:11:19.307 回答