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好得多。下面提供的链接对我帮助很大: