从Android活动B调用活动A方法

时间:2019-01-30 12:22:10

标签: java android android-activity

我是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的方法中进行一些访问。该怎么办?

4 个答案:

答案 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