tbl*_*tbl 5 tabs android message android-intent android-activity
我对Android实施程序活动之间的沟通有疑问.
这是两个活动类.
public class HelloAndroidActivity extends TabActivity{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Resources res = getResources();
TabHost tabHost = getTabHost();
TabHost.TabSpec spec;
Intent intent;
intent = new Intent().setClass(this, Tab1Activity.class);
spec = tabHost.newTabSpec("Tab1").setIndicator(
"Tab1", res.getDrawable(R.drawable.ic_tab_icon))
.setContent(intent);
tabHost.addTab(spec);
}
}
Run Code Online (Sandbox Code Playgroud)
_
public class Tab1Activity extends ListActivity {
private ArrayList<String> list = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
list = new ArrayList<String>();
setListAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, list));
addColumn("one");
addColumn("two");
addColumn("three");
}
public void addColumn(String s){
list.add(new String(s));
}
}
Run Code Online (Sandbox Code Playgroud)
HelloAndroidActivity是主要活动.Tab1Activity是子活动并显示listview.HelloAndroidActivity包含Tab1Activity视图.
我想要做的是从HelloAndroidActivity调用addColumn方法,因为HelloAndroidActivity被添加到像TwitterUserStreamAdapter这样的新函数中.如果android从Internet接收消息,应用程序会向Tab1Activity发送消息.
但是,我不知道如何实现活动之间的沟通.
您可以在使用的活动之间传递数据intent,您可以将其放在具有意图的附加内容中:
HelloAndroidActivity
intent.putExtra("callX", true);
Run Code Online (Sandbox Code Playgroud)
Tab1Activity
Bundle extras = getIntent().getExtras();
if (extras != null) {
boolean callX = extras.getBoolean("callX");
if(callX) {
X();
}
}
Run Code Online (Sandbox Code Playgroud)
编辑 如果你需要事件/监听器机制它可能大致是这样的(没有编译这个,但应该给你一个想法):
public inerface MyEventListener {
abstract void handleMyEvent();
}
public class Tab1Activity implements MyEventListener {
public void handleMyEvent() {
/*...*/
}
protected void onCreate(Bundle savedInstanceState) {
/*...*/
HelloAndroidActivity.addListener(this);
}
protected void onDestroy() {
/*...*/
HelloAndroidActivity.removeListener(this);
}
}
public class HelloAndroidActivity {
static ArrayList<MyEventListener> listeners = new ArrayList<MyEventListener>();
public static void addListener(MyEventListener listener) {
listeners.add(listener);
}
public static void removeListener(MyEventListener listener) {
listeners.remove(m);
}
public static void onEvent() {
for(MyEventListener m : listeners) {
m.handleMyEvent();
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8823 次 |
| 最近记录: |