我是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();
}
感谢你
答案 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);
}