Android 从 java class 回调到 Activity
Android make callback to an Activity from java class
如何从 Java Class 中回调 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
}
}
当调用 sendToSomeActivity()
时,我想回调已经启动的 SomeActivity
并将一些文本传递给 Activity。在 SomeActivity
我想使用文本。
注意:我要使用的测试Class 对象已在另一个class 中创建。
如何做到这一点?
在你的 java class 中创建一个 接口 像这样
public class TestClass{
private MyInterface myInterface;
public interface OnSendSomething {
public void onSending(String sendWhateverYouWant);
}
public void setOnSendListener(MyInterface myInterface) {
this.myInterface = myInterface;
}
}
private void sendToSomeActivity(){
//Call some method of SomeActivity and pas text as string
myInterface.onSending(sendWhateverYouWant);
}
然后在你的 activity 中做这样的事情:
TestClass tclass = new TestClass(context);
tclass.setOnSendListener(new OnSendSomething () {
@Override
public void onSending(String sendWhateverYouWant) {
//sendWhateverYouWant is here in activity
}
});
您也可以访问这些链接以获得更好的理解。
How to create our own Listener interface in android?
试试这个..
public class TestClass{
interface Implementable{
public void passData(String text);
}
Implementable imple;
String text = "Test";
public TestClass(Context context){
startActivity(new Intent(context, SomeActivity.class));
}
private void sendToSomeActivity(){
if(imple != null){
imple.passData(text);
}
}
public void setListener(Implementable im){
imple = im;
}
}
class SomeActivity implements Implementable{
new TestClass().setListener(this);
@override
public void passData(String text){
//here is your text
}
}
我选择的方案如下:
使用 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);
}
}
如何从 Java Class 中回调 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
}
}
当调用 sendToSomeActivity()
时,我想回调已经启动的 SomeActivity
并将一些文本传递给 Activity。在 SomeActivity
我想使用文本。
注意:我要使用的测试Class 对象已在另一个class 中创建。
如何做到这一点?
在你的 java class 中创建一个 接口 像这样
public class TestClass{
private MyInterface myInterface;
public interface OnSendSomething {
public void onSending(String sendWhateverYouWant);
}
public void setOnSendListener(MyInterface myInterface) {
this.myInterface = myInterface;
}
}
private void sendToSomeActivity(){
//Call some method of SomeActivity and pas text as string
myInterface.onSending(sendWhateverYouWant);
}
然后在你的 activity 中做这样的事情:
TestClass tclass = new TestClass(context);
tclass.setOnSendListener(new OnSendSomething () {
@Override
public void onSending(String sendWhateverYouWant) {
//sendWhateverYouWant is here in activity
}
});
您也可以访问这些链接以获得更好的理解。
How to create our own Listener interface in android?
试试这个..
public class TestClass{
interface Implementable{
public void passData(String text);
}
Implementable imple;
String text = "Test";
public TestClass(Context context){
startActivity(new Intent(context, SomeActivity.class));
}
private void sendToSomeActivity(){
if(imple != null){
imple.passData(text);
}
}
public void setListener(Implementable im){
imple = im;
}
}
class SomeActivity implements Implementable{
new TestClass().setListener(this);
@override
public void passData(String text){
//here is your text
}
}
我选择的方案如下:
使用 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);
}
}