如何从选项卡控件开始新的 activity?

How to start new activity from tab control?

我有主页 activity,它有选项卡控件,在第一个选项卡上显示主要 activity。在主选项卡上,我有将重定向到另一个 activity 的按钮。 并且无法重定向到另一个 activity.

public class Main1 extends Fragment 
{
    ImageView saving, loan;

    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

        saving = (ImageView) container.findViewById(R.id.imgSavingCollection);
        loan = (ImageView) container.findViewById(R.id.imgLoanCollection);

        saving.setOnClickListener((View.OnClickListener) container);
        loan.setOnClickListener((View.OnClickListener) container);

        View v = inflater.inflate(R.layout.activity_main1, container, false);
        return v;
    }

    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.imgSavingCollection:
                Intent savingactivity = new Intent(v.getContext(), SavingCollection.class);
                startActivity(savingactivity);
                break;

        }
    }
}

使用这个

 Intent savingactivity = new Intent(getActivity(), SavingCollection.class);
 startActivity(savingactivity);

v.getContext()替换为getActivity()

并定义布局线的上侧

View v = inflater.inflate(R.layout.activity_main1, container, false);

完整代码:

View v = inflater.inflate(R.layout.activity_main1, container, false);

saving = (ImageView) container.findViewById(R.id.imgSavingCollection);
    loan = (ImageView) container.findViewById(R.id.imgLoanCollection);

    saving.setOnClickListener((View.OnClickListener) container);
    loan.setOnClickListener((View.OnClickListener) container);


    return v;

问题可能出在 v.getContext() 上,所以在声明意图时将其替换为 getActivity() 即可。

您的 onCreateView 有问题,请将以下代码替换为您的 onCreateView

@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup     container, @Nullable Bundle savedInstanceState) {

  View v = inflater.inflate(R.layout.activity_main1, container, false);
  saving = (ImageView) v.findViewById(R.id.imgSavingCollection);
  loan = (ImageView) v.findViewById(R.id.imgLoanCollection);

  saving.setOnClickListener((View.OnClickListener) container);
  loan.setOnClickListener((View.OnClickListener) container);


  return v;
}

尝试像这样更改您的代码,

public class Main1 extends Fragment 
{
  ImageView saving, loan;

 @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    View rootView = inflater.inflate(R.layout.activity_main1, container, false);

  saving = (ImageView) rootView.findViewById(R.id.imgSavingCollection);
  loan = (ImageView) rootView.findViewById(R.id.imgLoanCollection);

saving.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Intent savingactivity = new Intent(getActivity(), SavingCollection.class);
            startActivity(savingactivity);
        }
    });

 return rootView;
}

}

还要检查你的manifest.xml

<activity android:name=".SavingCollection"/>

这可能对你有帮助

而不是

Intent savingactivity = new Intent(v.getContext(), SavingCollection.class);
startActivity(savingactivity);

添加这个

Intent savingactivity = new Intent(getActivity(), SavingCollection.class);
startActivity(savingactivity );