带有意图的片段中的 onclicklistener

Posted

技术标签:

【中文标题】带有意图的片段中的 onclicklistener【英文标题】:onclicklistener in fragment with intent 【发布时间】:2016-02-29 02:39:54 【问题描述】:

我有一个带有 Intro 类的 android 应用。 这个 Intro 类有三个片段。

在片段 3 (IntroPage3) 中,我想设置一个 onclicklistener,其意图是从 IntroPage3 到 Overview.class,如下所示:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
    FragementView = inflater.inflate(R.layout.intro_page1, container, false);

    Button FinishIntroButton = (Button) FragementView.findViewById(R.id.FinishIntroButton);
    FinishIntroButton.setOnClickListener(new View.OnClickListener() 
        @Override
        public void onClick(View v) 
            intent = new Intent(IntroPage3.this, Overview.class);
            startActivityForResult(intent, 0);
        
    );


    return FragementView;

问题:这条线是:

intent = new Intent(IntroPage3.this, Intro.class);

错误信息:

【问题讨论】:

【参考方案1】:

使用intent = new Intent(getActivity(), Overview.class);

【讨论】:

【参考方案2】:
public  class Fragment3 extends Fragment


    @Nullable
    @Override
    public View onCreateView(@NonNull final LayoutInflater inflater, @Nullable final ViewGroup container, @Nullable Bundle savedInstanceState) 
        View view;
        view = inflater.inflate(R.layout.page_4, container, false);
        Button button=view.findViewById(R.id.exit);
        button.setOnClickListener(new View.OnClickListener() 
            @Override
            public void onClick(View v) 
              Intent intent;
              intent=new Intent(getActivity(),FragmentLogin.class);
              startActivity(intent);

            
        );
        return view;
    

【讨论】:

【参考方案3】:

您必须使用getActivity() 而不是IntroPage3.this

为什么

getActivity() 在 Fragment 中返回 Fragment 当前关联的 Activity。

Button FinishIntroButton = (Button) FragementView.findViewById(R.id.FinishIntroButton);
FinishIntroButton.setOnClickListener(new View.OnClickListener() 
    @Override
    public void onClick(View v) 
        intent = new Intent(getActivity(), Overview.class);
        startActivityForResult(intent, 0);
    
);

【讨论】:

以上是关于带有意图的片段中的 onclicklistener的主要内容,如果未能解决你的问题,请参考以下文章

如何获取firebase列表对象位置?

Onclicklistener 在片段列表视图中不起作用

片段中的 RecyclerView OnclickListener

如何从活动意图到特定片段

带有转换的片段交易 - 需要唯一的转换名称

片段内带有基本适配器的列表视图