[英]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.