简体   繁体   English

如何调用MainActivity方法

[英]How to call MainActivity method

I'm trying to call method share() from a fragment. 我正在尝试从一个片段调用方法share()。 share() is in MainActivity.java share()在MainActivity.java中

Button shareButton = new Button(getActivity());
shareButton.setOnClickListener(new View.onClickListener() {
   @Override
   public void onClick(View v) {
      MainActivity ma = new MainActivity();
      ma.share();              //Doesn't work! NullPointerException
   }
}

share(): 分享():

public void share() {
     Intent i = new Intent();
     i.setAction(Intent.ACTION_SEND);
     i.setType("text/plain");
     i.putExtra(Intent.EXTRA_TEXT, shareString);
     startActivity(Intent.createChooser(i, "Say Something"));
}

Change 更改

MainActivity ma = new MainActivity();

To

MainActivity ma = (MainActivity) getActivity();

getActivity() returns an instance of Activity so it must be cast getActivity()返回Activity一个实例,因此必须对其进行强制转换

For example change this: 例如更改此:

MainActivity ma = new MainActivity();

To this: 对此:

MainActivity ma = (MainActivity) getActivity();

((MainActivity)getActivity())。methodName这将帮助您,尝试一下

from software engineering Design principles 从软件工程设计原理

public class Utils {
    public static void share(Context context,String shareString) {
        Intent i = new Intent();
        i.setAction(Intent.ACTION_SEND);
        i.setType("text/plain");
        i.putExtra(Intent.EXTRA_TEXT, shareString);
        context.startActivity(Intent.createChooser(i, "#CrystalMaths"));

    }
}

and wherever you are use 无论您在哪里使用

Utils.share(getApplicationContext(),"share this line");

this makes our code reusable and cohesive 这使我们的代码可重用且具有凝聚力

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM