我正在尝试从片段中调用方法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"));
}
答案 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");
这使我们的代码可重用且具有凝聚力