我是Android开发的新手,我有一个天气应用程序,我的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);
}
当我点击确定但我崩溃时,我需要输入并存储在城市变量中。提前谢谢大家。
答案 0 :(得分:0)
你这里做错了
MainActivity obj=new MainActivity();
因为这是不可能的。 android中的所有活动必须经历活动生命周期,以便它们具有附加到活动的有效上下文。所以你必须使用getActivity()方法来获取父活动对象,然后将其强制转换为MainActivity。像这样
((MainActivity) getActivity()).changeCityLocation(input.getText().toString());
这将允许您从片段访问父活动方法。