【问题标题】:onclicklistener in fragment with intent带有意图的片段中的 onclicklistener
【发布时间】: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);

错误信息:

【问题讨论】:

    标签: java android android-fragments android-intent


    【解决方案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);
            }
        });
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-02-26
          • 2021-12-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多