Android从Java类回调到Activity

use*_*179 5 android callback android-activity

如何通过Java类对Activity进行回调?

例:

    public class TestClass{
    String text = "Test";
    public TestClass(Context context){
            startActivity(new Intent(context, SomeActivity.class));
    }

    private void sendToSomeActivity(){
      //Call some method of SomeActivity and pas text as string
    }

   }
Run Code Online (Sandbox Code Playgroud)

sendToSomeActivity()被调用时,我想对已经开始的回调SomeActivity,并将一些文本传递给Activity。在SomeActivity我想用文字。

注意:我要使用的TestClass对象已经在另一个类中创建。

如何才能做到这一点?

use*_*179 5

我选择的解决方案如下:

使用 BroadcastReceivers 在 Java 类和活动之间进行通信。

例子:

public class SomeActivity extends Activity{
    private MyBroadcastReceiver receiver;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        receiver = new MyBroadcastReceiver();
        this.registerReceiver(receiver, new IntentFilter(MyBroadcastReceiver.ACTION));
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        this.unregisterReceiver(receiver);
    }

    private class MyBroadcastReceiver extends BroadcastReceiver{
        public static final String ACTION = "com.example.ACTION_SOMETHING"
        @Override
        public void onReceive(Context context, Intent intent) {
            String test = intent.getStringExtra("dataToPass");
        }
    }
} 

public class TestClass{
    private String test = "TEST";
    private Context context;

    public TestClass(Context context){
      this.context = context;
    }
    private void sendToSomeActivity(){
       Intent intent = new Intent();
       intent.setAction(SomeActivity.MyBroadcastReceiver.ACTION);
       intent.putExtra("dataToPass", test);
       context.sendBroadcast(intent); 
    }

}
Run Code Online (Sandbox Code Playgroud)