![](/img/trans.png)
[英]How to Call Method in Activity From Other Class not Activity in Android?
[英]Call activity A method from Activity B Android
我是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方法中進行一些訪問。 該怎么辦 ?
由於您是Android的新手,所以我會告訴您,從活動A到B調用方法是一種不好的做法,反之亦然,您可以使用Intent和Bundle將參數從一個活動傳遞到另一個活動,以及是否需要從第二個活動傳遞參數首先,您需要使用重寫方法onActivityResults
以下是一些有用的鏈接,有關將參數從一個活動傳遞到另一個活動: https : //www.dev2qa.com/passing-data-between-activities-android-tutorial/在此鏈接中,您可以看到一個工作原理的示例。
希望能幫助到你。
--EDIT(如果需要在創建時更改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();
}
使該方法成為公共和靜態方法,然后使用類名對其進行訪問。 例如,在您的第二個活動中,使用ActivityB.demo()
嘗試使用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
要返回A而不執行“ doSomething()”方法,
setResult(Activity.RESULT_CANCELED)
finish()
請嘗試這種方式
public class ActivityA extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void demo() {
// Do something
}
}
public class ActivityB extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ActivityA activityA = new ActivityA(); // create object
activityA.demo(); //
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.