Android:getApplication()对于类型View.OnClickListener()未定义
我目前正在尝试在我的android应用程序中实现Facebook的登录功能。我在工作中遇到了问题Android:getApplication()对于类型View.OnClickListener()未定义,android,android-fragments,Android,Android Fragments,我目前正在尝试在我的android应用程序中实现Facebook的登录功能。我在工作中遇到了问题 Intent diaryIntent = new Intent(getApplication(), DiaryListActivity.class); 出现错误时,类型new View.OnClickListener的getApplication()方法未定义。我已经研究了关于这个问题的其他问题,但是我还没有找到解决办法。就我个人而言,我相信这可能与我使用片段这一事实有关,但我对这个概念还不熟悉,
Intent diaryIntent = new Intent(getApplication(), DiaryListActivity.class);
出现错误时,类型new View.OnClickListener的getApplication()方法未定义。我已经研究了关于这个问题的其他问题,但是我还没有找到解决办法。就我个人而言,我相信这可能与我使用片段这一事实有关,但我对这个概念还不熟悉,所以不知道如何解决这个问题,或者这是否与此有关
课程
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;
感谢您的指导,提前感谢您
编辑:@mike2013@codeMagic@crazyPixel都给了我正确的答案,但我不能给他们所有的正确答案,所以我给了第一个答案正确的记号。谢谢您的回答,谢谢。更改
Intent diaryIntent = new Intent(getApplication(), DiaryListActivity.class);
Intent diaryIntent = new Intent(getActivity(), DiaryListActivity.class);
到
对于Intent
构造函数,您需要一个Context
,而不是一个应用程序,尽管我认为您想要的是getApplicationContext()
,但是,无论哪种方式,只需使用单击的视图的Context
改变
Intent diaryIntent = new Intent(getApplication(), DiaryListActivity.class);
Intent diaryIntent = new Intent(getActivity(), DiaryListActivity.class);
到
对于Intent
构造函数,您需要一个Context
,而不是一个应用程序,尽管我认为您想要的是getApplicationContext()
,但是,无论哪种方式,只需使用单击的视图的Context
更改您的:
Intent diaryIntent = new Intent(getApplication(), DiaryListActivity.class);
到
改变
Intent diaryIntent = new Intent(getActivity(), DiaryListActivity.class);
由于使用的是片段,因此必须使用getActivity()而不是context.getApplicationContext()
我很肯定这会奏效的祝你好运 更改您的:
Intent diaryIntent = new Intent(getApplication(), DiaryListActivity.class);
到
改变
Intent diaryIntent = new Intent(getActivity(), DiaryListActivity.class);
由于使用的是片段,因此必须使用getActivity()而不是context.getApplicationContext()
我很肯定这会奏效的祝你好运 要启动活动,您需要在片段使用中使用活动上下文-
getActivity().getApplicationContext()
而不是
getApplication()
要继续进行该活动,请使用-
getActivity().startActivity(intent)
一个好的经验法则是,片段是“内部”活动,即它们的上下文(以及所有相关内容)来自它们所在的活动。要启动活动,您需要在片段使用中使用活动上下文-
getActivity().getApplicationContext()
而不是
getApplication()
要继续进行该活动,请使用-
getActivity().startActivity(intent)
一个好的经验法则是,片段是“内部”活动,即它们的上下文(以及所有相关内容)来自它们所在的活动。@barryspikebob我很高兴它对您有用。这可能会比其他一些方法稍好一些,原因有两个,包括如果要将此代码移动到不同的onClick()
或similar@barryspikebob我很高兴它对你有用。这可能会比其他一些方法稍好一些,原因有两个,包括如果您想将此代码移动到不同的onClick()
或类似的位置,它更便于移植。。我很高兴能帮上忙……)没问题。。我很高兴能帮上忙……)