【问题标题】:Adding multiple functions to a ViewPager向 ViewPager 添加多个函数
【发布时间】:2013-05-04 20:33:58
【问题描述】:

我对 Android 开发相当陌生,我正在尝试创建一个带有按钮的滑动轮播,这些按钮可以链接到其他活动,这就是我目前所拥有的......

Main.java

public class MainActivity extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //Remove title bar
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.activity_main);


    //Sliding Carousel controls
    MyPagerAdapter adapter = new MyPagerAdapter();
    ViewPager myPager = (ViewPager) findViewById(R.id.myfivepanelpager);
    myPager.setAdapter(adapter);
    myPager.setCurrentItem(1);



}   

//Sliding Carousel controls
class MyPagerAdapter extends PagerAdapter {
    public int getCount() {
        return 5;
    }
    public Object instantiateItem(View collection, int position) {
        LayoutInflater inflater = (LayoutInflater) collection.getContext()
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        int resId = 0;
        switch (position) {
        case 0:
            resId = R.layout.carousel_1;
            break;
        case 1:
            resId = R.layout.carousel_2;
            break;
        case 2:
            resId = R.layout.carousel_3;
            Button myButton = (Button) findViewById(R.id.paymybill);
            myButton.setOnClickListener(new View.OnClickListener() {
               public void onClick(View view) {
                   Intent intent = new Intent();
                   setResult(RESULT_OK, intent);
                   finish();
               }

            });
            break;





        case 3:
            resId = R.layout.carousel_4;
            break;
        case 4:
            resId = R.layout.carousel_5;
            break;
        }

        View view = inflater.inflate(resId, null);
        ((ViewPager) collection).addView(view, 0);
        return view;
    }

    @Override
    public void destroyItem(View arg0, int arg1, Object arg2) {
        ((ViewPager) arg0).removeView((View) arg2);
    }

    @Override
    public boolean isViewFromObject(View arg0, Object arg1) {
        return arg0 == ((View) arg1);
    }

    @Override
    public Parcelable saveState() {
        return null;
    }

我目前正在尝试让按钮在案例 2 上工作(但最终所有案例都有 2 到 4 个按钮)。

当我用

将它加载到我的模拟器上时
                Button myButton = (Button) findViewById(R.id.paymybill);
            myButton.setOnClickListener(new View.OnClickListener() {
               public void onClick(View view) {
                   Intent intent = new Intent();
                   setResult(RESULT_OK, intent);
                   finish();
               }

            });
            break;

注释掉它可以完美运行,但是当我包含它时它会在加载时崩溃。

我认为问题在于我没有正确地将按钮指向寻呼机视图并且应用程序崩溃了,因为 main_activity 没有我引用的任何按钮或布局。

过去 2 天我一直在研究类似的问题,但我不确定我做错了什么,例如 this case

v = inflater.inflate(R.layout.dashboard_media, null);

接缝是同样的问题,但它使用了不同的适配器实现,我不确定我可以替换什么以及我不能替换什么(我已经尝试过并且没有任何接缝可以工作),正如我所说的那样对此很陌生,我相信这是我想念的简单东西!

谁能帮忙?

【问题讨论】:

    标签: android android-layout android-viewpager


    【解决方案1】:

    理想情况下,替换以下行

    Button myButton = (Button) findViewById(R.id.paymybill);
    

    Button myButton = (Button) view.findViewById(R.id.paymybill);
    

    本来可以解决问题的。

    但在你的情况下,carousel_3.xml 已经是按钮 paymybill 那么如何在 paymybill 按钮中添加以下内容

    android:OnClick="payMyBill"
    

    并在你的 java 中添加一个函数来处理你想要做的事情

    public void payMyBill(View view){
      Intent intent = new Intent();
      setResult(RESULT_OK, intent);
      finish();
    }
    

    【讨论】:

    • 太棒了,效果很好,我将函数更新为... code public void payMyBill(View view){ Intent myIntent = new Intent(view.getContext(), ccpaymybill.class); startActivityForResult(myIntent, 0); }code 哪些接缝完成了这项工作。我还测试了第二个按钮和功能,并且(在拉出我的头发 10 分钟后,我意识到我没有将新活动添加到清单中)工作正常。非常感谢。
    • 乐于助人。如果它对你有用,你能接受这个作为答案吗?谢谢
    猜你喜欢
    • 2018-01-28
    • 1970-01-01
    • 2021-10-09
    • 2019-11-21
    • 2020-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多