我怎样才能让我的按钮在Fragments,ViewPager中做某事 [英] How can I make my button to do something in Fragments,ViewPager

查看:94
本文介绍了我怎样才能让我的按钮在Fragments,ViewPager中做某事的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

首先,我必须说我的英语不好,并且对Android编程完全陌生".

First I must say that I'm not good at English and "completely new" to Android Programming.

我想创建一个类似Android主屏幕的应用程序,该应用程序可以左右滑动以查看视图.在我的应用程序上,每个视图都会有一个按钮来做某事;现在,我已经使用ViewPager和Fragments完成了滑动部分.当我运行我的应用程序时,它可以顺畅地进入左右视图,但是我找不到在每个视图中都使按钮起作用的解决方案.我怎样才能做到这一点?非常感谢您的所有回答.以下是我的代码(我通过互联网上的示例对其进行了修改).

I want to create an app like Android's home screen which can slide left-right to see the views. On my app, each view will have a button to do something; Now I have accomplished the sliding part by using ViewPager and Fragments. When I run my app, it can smoothly go left-right views but I can't find the solution to make a button in each view to working. How can I do this? Thank you very much for every of your answers. Followings are my code(I modified it from examples over the internet).

这是其中包含许多片段的主要片段类.

This the main fragment class that contains many fragments in it.

public class LessonsActivity extends FragmentActivity{
/** maintains the pager adapter */
private PagerAdapter mPagerAdapter;

/*
 * (non-Javadoc)
 * 
 * @see android.support.v4.app.FragmentActivity#onCreate(android.os.Bundle)
 */
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    super.setContentView(R.layout.viewpager_layout);
    // initialsie the pager
    this.initialisePaging();
}

/**
 * Initialise the fragments to be paged
 */
private void initialisePaging() {

    List<Fragment> fragments = new Vector<Fragment>();
    fragments.add(Fragment.instantiate(this, Lesson_1.class.getName()));
    fragments.add(Fragment.instantiate(this, Lesson_2.class.getName()));
    fragments.add(Fragment.instantiate(this, Lesson_3.class.getName()));
    fragments.add(Fragment.instantiate(this, Lesson_4.class.getName()));
    this.mPagerAdapter = new PagerAdapter(
            super.getSupportFragmentManager(), fragments);
    //
    ViewPager pager = (ViewPager) super.findViewById(R.id.viewpager);
    pager.setAdapter(this.mPagerAdapter);

}

}

下面是我用来显示布局的片段类.

This below is the fragment class that I used to display the layout.

public class Lesson_1 extends Fragment {
/**
 * (non-Javadoc)
 * 
 * @see android.support.v4.app.Fragment#onCreateView(android.view.LayoutInflater,
 *      android.view.ViewGroup, android.os.Bundle)
 */
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    if (container == null) {
        // We have different layouts, and in one of them this
        // fragment's containing frame doesn't exist. The fragment
        // may still be created from its saved state, but there is
        // no reason to try to create its view hierarchy because it
        // won't be displayed. Note this is not needed -- we could
        // just run the code below, where we would create and return
        // the view hierarchy; it would just never be used.
        return null;
    }
    return (LinearLayout) inflater.inflate(R.layout.lessons1, container,
            false);

}

}

这是我的PagerAdapterClass

And this is my PagerAdapterClass

public class PagerAdapter extends FragmentPagerAdapter {

private List<Fragment> fragments;
/**
 * @param fm
 * @param fragments
 */
public PagerAdapter(FragmentManager fm, List<Fragment> fragments) {
    super(fm);
    this.fragments = fragments;
}
/* (non-Javadoc)
 * @see android.support.v4.app.FragmentPagerAdapter#getItem(int)
 */
@Override
public Fragment getItem(int position) {
    return this.fragments.get(position);
}

/* (non-Javadoc)
 * @see android.support.v4.view.PagerAdapter#getCount()
 */
@Override
public int getCount() {
    return this.fragments.size();
}

}

推荐答案

在您的Fragment中,在方法onCreateView()中,您将返回特定Fragment的视图.这意味着您可以对其进行操作.与其立即返回(膨胀的)视图,不如将其放在变量中并对该变量进行操作,如下所示:

In your Fragment, in the method onCreateView() you're returning the view for a specific Fragment. This means you can manipulate it. Instead of immediately returning the (inflated) view, put it in a variable and manipulate that variable, like so:

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

    if (container == null) {
        ...
        return null;
    }

    LinearLayout mLinearLayout = (LinearLayout) inflater.inflate(R.layout.lessons1,
                    container, false);

    // note that we're looking for a button with id="@+id/myButton" in your inflated layout
    // Naturally, this can be any View; it doesn't have to be a button
    Button mButton = (Button) mLinearLayout.findViewById(R.id.myButton);
    mButton.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            // here you set what you want to do when user clicks your button,
            // e.g. launch a new activity
        }
    });

    // after you've done all your manipulation, return your layout to be shown
    return mLinearLayout;
}

这篇关于我怎样才能让我的按钮在Fragments,ViewPager中做某事的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆