【发布时间】:2016-07-03 15:56:00
【问题描述】:
在onAttach 函数中,eclipse 显示错误说明
Fragment 类型中的 onAttach(Activity) 方法不适用 对于参数(上下文)
虽然明明是传递了Context类型变量
import android.content.Context;
public class MyListFragment extends Fragment{
private OnItemSelectedListener listener;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_rsslist_overview,
container, false);
Button button = (Button) view.findViewById(R.id.button1);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
updateDetail("fake");
}
});
return view;
}
public interface OnItemSelectedListener {
public void onRssItemSelected(String link);
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
if (context instanceof OnItemSelectedListener) {
listener = (OnItemSelectedListener) context;
} else {
throw new ClassCastException(context.toString()
+ " must implemenet MyListFragment.OnItemSelectedListener");
}
}
@Override
public void onDetach() {
super.onDetach();
listener = null;
}
// may also be triggered from the Activity
public void updateDetail(String uri) {
// create a string just for testing
String newTime = String.valueOf(System.currentTimeMillis());
// inform the Activity about the change based
// interface defintion
listener.onRssItemSelected(newTime);
}
}
【问题讨论】:
-
您正在使用的 API 级别??
-
@UsamaZafar targetSdk 版本为 15
-
那就是问题所在。你为你的targetsdk使用了错误的函数版本......
-
@UsamaZafar 是的,如果 APIpublic void onAttach(Activity context)
-
是的,看来你明白了。请将 Rohits 的答案标记为已接受,以便其他人也能从中受益。
标签: java android eclipse android-activity android-context