Java 在AlertDialog的Onclick上调用另一个类的方法
我是android开发新手,我有一个天气应用程序,我的Java 在AlertDialog的Onclick上调用另一个类的方法,java,android,Java,Android,我是android开发新手,我有一个天气应用程序,我的WeatherFragment类在代码下面,这是一个片段类 btn=(Button)rootView.findViewById(R.id.button); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { final AlertDialog.Bui
WeatherFragment
类在代码下面,这是一个片段类
btn=(Button)rootView.findViewById(R.id.button);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle("Change city");
final EditText input = new EditText(getActivity());
input.setInputType(InputType.TYPE_CLASS_TEXT);
builder.setView(input);
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
MainActivity obj=new MainActivity();
obj.changeCityLocation(input.getText().toString());
}
});
builder.show();
}
});
return rootView;
}
我需要调用changeCityLocation()
,它位于MainActivity
中,它的代码是:
public void changeCityLocation(String city){
WeatherFragment wf = (WeatherFragment)getSupportFragmentManager()
.findFragmentById(R.id.container);
wf.changeCity(city);
new CityPreference(this).setCity(city);
}
我需要在单击ok时获取输入并存储在city变量中,但它崩溃了。提前谢谢大家。你们做错了
MainActivity obj=new MainActivity();
因为这是不可能的。android中的所有活动都必须经过活动生命周期,以便它们具有有效的活动上下文。因此,必须使用getActivity()方法获取父活动对象,然后将其强制转换为MainActivity。像这样
((MainActivity) getActivity()).changeCityLocation(input.getText().toString());
这将允许您从片段访问父活动方法。您在这里做错了
MainActivity obj=new MainActivity();
因为这是不可能的。android中的所有活动都必须经过活动生命周期,以便它们具有有效的活动上下文。因此,必须使用getActivity()方法获取父活动对象,然后将其强制转换为MainActivity。像这样
((MainActivity) getActivity()).changeCityLocation(input.getText().toString());
这将允许您从片段访问父活动方法。
MainActivity
是活动还是普通java类?似乎这家伙正在创建主机活动的实例Make changeCityLocation是静态函数,并使用直接类名调用而不创建对象谢谢所有SIRMainActivity
是活动还是普通java类?似乎这家伙正在制作一个主机活动的实例Make changeCityLocation是静态函数,并使用直接类名调用而不创建对象谢谢大家Sirsthank先生,我是Android新手,我只懂基本java,所以我会出错,亲爱的先生,如果你能给我一个提示,我可以从哪里学习正确的Android开发和Java。谢谢你,先生。@BikeshPawn只要在谷歌上搜索一下,你就会找到成千上万的开发教程。即使你也可以阅读官方文件。非常感谢,先生,我是Android新手,只懂基本的java,所以我遇到了一些错误,亲爱的先生,如果你能给我一个提示,我可以从哪里学习正确的Android开发和java。谢谢你,先生。@BikeshPawn只要在谷歌上搜索一下,你就会找到成千上万的开发教程。即使你也可以阅读官方文件。