我目前正在尝试在我的Android应用中实现Facebook的登录工具。我遇到了
的问题Intent diaryIntent = new Intent(getApplication(), DiaryListActivity.class);
错误方法getApplication()未定义类型new View.OnClickListener 。我已经查看了有关此问题的其他问题,但我还没有找到解决方案。我个人认为这可能与我使用片段的事实有关,但我是这个概念的新手,所以不明白如何解决问题,或者甚至是否与此有关。
类
public class SelectionFragment extends Fragment {
private static final String TAG = "SelectionFragment";
private ImageButton mAddButton;
@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
View view = inflater.inflate(R.layout.selection,
container, false);
mAddButton = (ImageButton) view.findViewById(R.id.diaryform_home_add);
mAddButton.setOnClickListener(new View.OnClickListener() { //Listens for a user to interact with the save button
public void onClick(View v) {
// Do something to save the data
Intent diaryIntent = new Intent(getApplication(), DiaryListActivity.class);
startActivity(diaryIntent);
}
});
return view;
感谢任何指导,谢谢你。
编辑: @ mike20132013 @codeMagic @crazyPixel所有人给了我正确答案,但我不能给他们所有正确的答案所以我给了第一个答案正确的答案。谢谢你的回答,谢谢。
答案 0 :(得分:2)
改变你的:
Intent diaryIntent = new Intent(getApplication(), DiaryListActivity.class);
到
更改
Intent diaryIntent = new Intent(getActivity(), DiaryListActivity.class);
由于您使用的是片段,因此必须使用getActivity()而不是context.getApplicationContext()。
我很确定这会奏效。祝你好运.. :)
答案 1 :(得分:1)
更改
Intent diaryIntent = new Intent(getApplication(), DiaryListActivity.class);
到
Intent diaryIntent = new Intent(v.getContext(), DiaryListActivity.class);
Context
构造函数需要Intent
而不是应用程序,但我认为您的意图是getApplicationContext()
,但无论如何,只需使用Context
{ {1}}点击了。
答案 2 :(得分:1)
要启动活动,您需要在片段使用中使用活动上下文 -
getActivity().getApplicationContext()
而不是
getApplication()
继续使用该活动 -
getActivity().startActivity(intent)
要记住的一个好的拇指规则是片段是“内部”活动,即它们的上下文(以及所有相关的)来自它们所在的活动。