我有MainActivity这是一个Activity和其他类(这是一个简单的java类),我们称之为"SimpleClass".现在我想从该类运行命令startActivityForResult.
现在我虽然我可以传递那个类(SimpleClass),只有MainActivity的上下文,问题是,你不能运行context.startActivityForResult(...);
所以使SimpleClass使用'startActivityForResult的唯一方法; 是将MainActivity的引用作为Activity变量传递给SimpleClass,如下所示:
在MainActivity类中,我以这种方式创建SimpleClass的实例:
SimpleClass simpleClass=new SimpleClass(MainActivity.this);
Run Code Online (Sandbox Code Playgroud)
现在这就是SimpleClass的样子:
public Class SimpleClass {
Activity myMainActivity;
public SimpleClass(Activity mainActivity) {
super();
this.myMainActivity=mainActivity;
}
....
public void someMethod(...) {
myMainActivity.startActivityForResult(...);
}
}
Run Code Online (Sandbox Code Playgroud)
现在它的工作,但不是一个正确的方式这样做?我恐怕将来可能会有一些内存泄漏.
谢谢.射线.
我喜欢在这个例子中启用蓝牙.
但是我的类不是Activity而是Service,因此我无法调用startActivityForResult.我怎么解决这个问题?.我知道还有其他一些问题已得到解答
但这并没有解决我的问题,因为我的应用程序包含服务而没有别的.
我正在开发一个应用程序,它应该将一些文本返回给启动意图的应用程序.
但启动意图的应用程序是IME /软键盘.因此,StartActivityForResult不可用,因为IME是一项服务.
我怎样才能做到这一点?
到目前为止我得到了什么:
键盘:
final Intent intent = new Intent("com.example.helloworld.GETTEXT");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
intent.putExtra("keyboard", true);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
其他应用:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Bundle extras = getIntent().getExtras();
if (extras == null){
return;
} else {
finish();
}
}
@Override
public void finish() {
Intent data = new Intent();
data.putExtra("test", "PASSED");
setResult(RESULT_OK, data);
super.finish();
}
Run Code Online (Sandbox Code Playgroud) 在谷歌I/O期间的Virgil Dobjanschi谈话中,他提到Services用于进行提取,然后使用回调来通知Activity何时完成.他从未详细说明如何实现此回调,我似乎无法在任何地方找到任何有用的信息.
我想他说你根本不需要实现绑定?
有线索吗?