如何调用MainActivity方法

时间:2016-04-20 12:51:28

标签: java android

我正在尝试从片段中调用方法share()。 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
   }
}

份额():

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"));
}

4 个答案:

答案 0 :(得分:1)

更改

MainActivity ma = new MainActivity();

MainActivity ma = (MainActivity) getActivity();

getActivity()返回Activity的实例,因此必须强制转换

答案 1 :(得分:0)

例如改变这个:

MainActivity ma = new MainActivity();

对此:

MainActivity ma = (MainActivity) getActivity();

答案 2 :(得分:0)

((MainActivity)getActivity())。methodName这对你有帮助,试试看

答案 3 :(得分:0)

来自软件工程设计原则

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"));

    }
}

无论你在哪里使用

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

这使我们的代码可重用且具有凝聚力