Android 如何从将另一个类扩展到活动中的java类返回值
假设我有以下主要活动:Android 如何从将另一个类扩展到活动中的java类返回值,android,android-activity,Android,Android Activity,假设我有以下主要活动: public class MwConsoleActivity extends Activity { private classChild child = null; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main);
public class MwConsoleActivity extends Activity {
private classChild child = null;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
child = new classChild();
}
}
IntentFilter intentFilter = new IntentFilter(
"com.unique.name");
mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
//extract our message from intent
String msg_for_me = intent.getStringExtra("some_msg");
}
};
//registering our receiver
this.registerReceiver(mReceiver, intentFilter);
Intent i = new Intent("com.unique.name").putExtra("some_msg", "I have been updated!");
this.sendBroadcast(i);
然后考虑类“CaseCHILL”的实现:
我尝试使用IntentServices,但无法将值接收回主活动。我应该采取什么方法 干杯Ali您应该使用观察者/监听器模式
在使用MVC架构模式时,它是最常用的设计模式之一。您应该使用观察者/监听器模式
在使用MVC架构模式时,它是最常用的设计模式之一。您的问题很不清楚,但我认为您想要的是实现对活动的回调。您可以使用一个接口来实现这一点
public class MwConsoleActivity extends Activity implements MwBondingAgent{
private classChild child = null;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
child = new classChild();
}
@Override
public void gotEventData(EventData myEventData) {
//to whatever you want with myEventData
}
}
在你的另一节课上
public class MwBondingAgent extends SapereAgent {
private MwBondingAgentCallback activityCallback;
MwBondingAgent(Activity callback){
activityCallback = callback;
}
public void AddEventListener(childAddedEvent event) {
//Send the data of event back to the main activity
EventData myEventData = //got some event data;
//Send it back to activity
activityCallback.gotEventData(myEventData);
}
public interface MwBondingAgentCallback {
public void gotEventData(EventData myEventData);
}
}
您的问题很不清楚,但我认为您想要的是实现对您的活动的回调。您可以使用一个接口来实现这一点
public class MwConsoleActivity extends Activity implements MwBondingAgent{
private classChild child = null;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
child = new classChild();
}
@Override
public void gotEventData(EventData myEventData) {
//to whatever you want with myEventData
}
}
在你的另一节课上
public class MwBondingAgent extends SapereAgent {
private MwBondingAgentCallback activityCallback;
MwBondingAgent(Activity callback){
activityCallback = callback;
}
public void AddEventListener(childAddedEvent event) {
//Send the data of event back to the main activity
EventData myEventData = //got some event data;
//Send it back to activity
activityCallback.gotEventData(myEventData);
}
public interface MwBondingAgentCallback {
public void gotEventData(EventData myEventData);
}
}
您可以使用和intentFilter收听广播。 将以下内容添加到活动中:
public class MwConsoleActivity extends Activity {
private classChild child = null;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
child = new classChild();
}
}
IntentFilter intentFilter = new IntentFilter(
"com.unique.name");
mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
//extract our message from intent
String msg_for_me = intent.getStringExtra("some_msg");
}
};
//registering our receiver
this.registerReceiver(mReceiver, intentFilter);
Intent i = new Intent("com.unique.name").putExtra("some_msg", "I have been updated!");
this.sendBroadcast(i);
在类中,将以下内容添加到要通知活动的部分:
public class MwConsoleActivity extends Activity {
private classChild child = null;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
child = new classChild();
}
}
IntentFilter intentFilter = new IntentFilter(
"com.unique.name");
mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
//extract our message from intent
String msg_for_me = intent.getStringExtra("some_msg");
}
};
//registering our receiver
this.registerReceiver(mReceiver, intentFilter);
Intent i = new Intent("com.unique.name").putExtra("some_msg", "I have been updated!");
this.sendBroadcast(i);
您可以使用和intentFilter收听广播。 将以下内容添加到活动中:
public class MwConsoleActivity extends Activity {
private classChild child = null;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
child = new classChild();
}
}
IntentFilter intentFilter = new IntentFilter(
"com.unique.name");
mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
//extract our message from intent
String msg_for_me = intent.getStringExtra("some_msg");
}
};
//registering our receiver
this.registerReceiver(mReceiver, intentFilter);
Intent i = new Intent("com.unique.name").putExtra("some_msg", "I have been updated!");
this.sendBroadcast(i);
在类中,将以下内容添加到要通知活动的部分:
public class MwConsoleActivity extends Activity {
private classChild child = null;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
child = new classChild();
}
}
IntentFilter intentFilter = new IntentFilter(
"com.unique.name");
mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
//extract our message from intent
String msg_for_me = intent.getStringExtra("some_msg");
}
};
//registering our receiver
this.registerReceiver(mReceiver, intentFilter);
Intent i = new Intent("com.unique.name").putExtra("some_msg", "I have been updated!");
this.sendBroadcast(i);
我不确定你到底在问什么。你是在问如何使用侦听器实现观测者模式吗?谢谢你们的回复。设计模式的解决方案非常干净。但是我通过IntentService和ResultReceiver解决了这个问题,它比IntentFilter好得多。下面提供的链接对我帮助很大:我不确定你到底在问什么。你是在问如何使用侦听器实现观测者模式吗?谢谢你们的回复。设计模式的解决方案非常干净。但是我通过IntentService和ResultReceiver解决了这个问题,它比IntentFilter好得多。下面提供的链接对我帮助很大: