我是Java和android的新手。我正在开发自己的应用程序,但是在将方法从活动A传递到活动B时遇到问题。
这就是我所做的:
ActivityA具有Demo()方法。
public class ActivityA extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
protected void demo() {
// Do something
}
}
我创建了下面的类以将ActivityA的方法访问ActivityB:
public class External {
private ActivityA activitya;
private static External instance = null;
public External(ActivityA activitya) {
this.activitya = activitya;
}
static public External getInstance(ActivityA activitya) {
if (instance == null) {
instance = new MyntraExternal(activitya);
return instance;
} else {
return instance;
}
}
}
现在我该如何进一步?我在从ActivityB获取ActivityA中的方法时遇到很多问题。 请任何人帮助。
编辑:
ActivityB是我的启动器类,我想从ActivityB中的ActivityA的方法中进行一些访问。该怎么办?
答案 0 :(得分:2)
由于您是Android的新手,所以我会告诉您,从Activity A到B调用方法是一种错误的做法,反之亦然,您可以使用Intent和Bundle将参数从一个活动传递到另一个活动,并且如果需要从第二个活动到第一个活动,您需要使用重写方法onActivityResults
这里有一些有用的链接,关于将参数从一个活动传递到另一个活动: https://www.dev2qa.com/passing-data-between-activities-android-tutorial/ 在此链接中,您可以看到有关事物运行方式的示例。
希望有帮助。
-编辑(如果需要在创建时更改A中的某些内容,则需要从B到A调用函数,这是最好,最简单的方法)
在活动B中:
Intent intent = new Intent(this, ActivityA.class);
intent.putExtra("Work","doJump");
startActivity(intent);
在活动A中: onCreate:
String extra = getIntent().getStringExtra("Work");
if(extra != null && extra.equals("doJump")){
jump();
}
答案 1 :(得分:1)
将该方法设为公共和静态,然后使用类名进行访问。例如在第二个活动中,使用ActivityB.demo()
答案 2 :(得分:0)
尝试使用startActivityForResult
要从活动A开始活动B
startActivityForResult(intent, SOME_CODE)
要返回结果,您将需要在活动A中添加以下代码
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
when(code){
SOME_CODE -> if (resultCode == Activity.RESULT_OK) doSomething()
}
}
要告诉活动A调用方法,可以在活动B中说:
setResult(Activity.RESULT_OK)
finish()
B完成后,将执行A中的onActivityResult
要在不执行“ doSomething()”方法的情况下返回A,
setResult(Activity.RESULT_CANCELED)
finish()
答案 3 :(得分:0)
请尝试这种方式
tree.cssselect(Selector_1)[0].text