java如何使用接口在两个活动之间进行通信
我试图在两个活动之间建立侦听器接口Act1 and Act2
Act1
将启动Act2
。如果在Act2
中发生了一些事件,它将通知它Act1
。问题是我正在使用Intent启动新的活动,所以Act1如何将自己分配为Act2接口的侦听器呢
Act1。java
public class Act1 extends ActionBarActivity implements
ActionBar.OnNavigationListener {
ActionBar actionbar;
Intent pizzaIntent;
boolean visibleFirstTime = true;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.menutab);
//set actionbar here
}
@Override
public boolean onNavigationItemSelected(int arg0, long arg1)// item pos,
// itemid
{
switch (arg0) {
case 0:
if(this.visibleFirstTime == false)
{
if(pizzaIntent == null)
{
pizzaIntent = new Intent(this,Act2.class);
//how to call setChangeListener?
}
startActivity(pizzaIntent);
}
else
this.visibleFirstTime = false;
break;
case 1:
System.out.println("selected: " + arg0);
break;
case 2:
System.out.println("selected: " + arg0);
break;
case 3:
System.out.println("selected: " + arg0);
break;
default:
break;
}
return true;
}
}
Act2。java
public class Act2 extends Activity {
selectionChangeListener listener;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.pizza_slice_selection);
}
public void setChangeListener(selectionChangeListener listener)
{
this.listener = listener;
}
private interface selectionChangeListener
{
public void selectionMadeAtIndex(int index);
}
}
注意:请不要建议我使用碎片。我想当前使用活动
# 1 楼答案
最好、最短和最简单的方法是使用静态变量,如下所示:
# 2 楼答案
我建议创建一个model类。让我举个例子:
模型类:
下面是您将如何使用它:
在第二个活动中更改成员国:
LogCat输出:
Current state: false
MainActivity says: Model state changed: true
# 3 楼答案
你考虑过使用LocalBroadcastManager吗
在Act1的onCreate中:
在Act1的onDestroy中:
在Act2的onCreate中:
如果代码没有编译,请给我一个注释,我是手工编写的