如何在Main Activity中的TextView上显示状态消息?

时间:2012-06-19 04:35:32

标签: java android

我是Android的新手,在我的Android应用程序中,一个主Activity类,其中包含一个TextView,用于显示来自其他类的各种状态消息。我想使用其他类的状态值更新主TextView的{​​{1}}。主活动类和其他类之间没有直接连接。在android中有可能吗?如果是的话,我不知道这样做。请提供解决方案

代码段

Activity

其他类不是活动类

//main activity
public class MainMenu extends Activity {

    static String status = "Hello Friends";

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    TextView tv = (TextView)findViewById(R.id.mytext);
    tv.setText(status);

        MyOtherClass myclass = new MyOtherClass();
        myclass.connect();
}

感谢你

6 个答案:

答案 0 :(得分:1)

是的,您可能需要从其他类传递这些状态值,然后使用

         textView.setText(your_status);

值可以通过putExtra()和getExtra()

通过意图传递

答案 1 :(得分:1)

在主要活动中创建一个状态实例字段

public static status = "initial status";

将其设置为TextView

TextView tv = (TextView) findViewById(R.id.youtTextViewId);

tv.setText(status);

并在调用它们时使用其他活动中的值更新它。

答案 2 :(得分:1)

在头等舱发送状态

s=new Intent(this, nextClassName.class);
                    d=new Bundle();
                    d.putString("status", status);
                    s.putExtras(d);
                    startActivity(s);

然后在newClassName中,您可以通过此代码获取它

Intent t=getIntent();
    k=t.getExtras();
    status=k.getString("status");

你可以将textview文本设置为状态

textview.setText(status);

试试这个

答案 3 :(得分:1)

如果其他类是由ur活动启动的活动,则使用类似

的内容

主要活动

private void some_function() {
    startActivityForResult(intent_to_pass, SOME_REQUEST_CODE);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if((requestCode == SOME_REQUEST_CODE) && (resultCode == RESULT_OK)) {
        // extract status from data and use setText() to set the new status
    }
}

其他活动

// Prepare an intent, say result, with the status to be sent to main activity and use this to send back the new status
setResult(RESULT_OK, result);

如果其他类是独立的服务和/或活动,则在主活动中使用

@Override
protected void onNewIntent(Intent intent) {
    // Extract new status from intent now and use it
}

在其他类中,只需使用包含新状态的intent启动主活动。这可确保如果主要活动已在运行,则只需使用新意图中的数据

EDIT(发布后看到你的更新):

如果其他类既不是活动也不是服务,那么你可以这样做:

当您创建此类时,将父类的上下文(可以是服务或活动)传递给它,并使用此上下文创建与startActivity()一起使用的intent。或者,只需使用BroadcastListeners进行通信。但我不确定这是否是最佳方式

答案 4 :(得分:1)

你可以通过在代码中进行这些更改来实现这一目标

 public String connect(){
String strIP = Mtx.confRead("IPAddress");
String strPort = Mtx.confRead("Port");

        String msg = "Connecting...";
        return msg;

        // i want to show value of msg varible in Textview of main activity from here

}

并在主要班级

String status=myclass.connect();
textview.setText(status);

试试这个

答案 5 :(得分:1)

可能这可行.......

   //main activity
public class MainMenu extends Activity {

static String status = "Hello Friends";
static TextView tv;
 /** Called when the activity is first created. */
 @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

tv = (TextView)findViewById(R.id.mytext);
tv.setText(status);

    MyOtherClass myclass = new MyOtherClass();
    myclass.connect();
 }

在其他课程中:

   // Other class
     public class MyOtherClass {
   public MyOtherClass(){
     }

       public void connect(){
      String strIP = Mtx.confRead("IPAddress");
        String strPort = Mtx.confRead("Port");

        String msg = "Connecting...";
          MainMenu.tv.setText(msg);
           }