加载fragment和fragment的自动跳转

本文通过一个具体的实例展示了如何在Android应用中使用ViewPager组件进行页面切换,包括设置Adapter、启动线程自动切换页面及处理按钮点击事件等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import java.util.ArrayList;
import java.util.List;
import zhaozhipeng.fragment.setUp1fragment;
import zhaozhipeng.fragment.setUp2fragment;
import zhaozhipen.fragment.setUp3fragment;

import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.os.SystemClock;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.text.style.LineHeightSpan.WithDensity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends FragmentActivity {
protected static final int SHOW_BUTTON_VISIABLE = 10;
private ViewPager viewPagter;
private List fragments;
private Button btnLog;
private ViewPagerAdapter viewPagerAdapter;
private int index=0;

private Handler handler = new Handler(){
    public void handleMessage(android.os.Message msg) {
        int ind;
        switch (msg.what) {
        case SHOW_BUTTON_VISIABLE:

            startActivity(new Intent(MainActivity.this,HomeActivity.class));
            break;
        default:
            ind=msg.what;
            viewPagter.setCurrentItem(ind);
            break;
        }
    };
};


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.fragment_log_one);
    setView();
    // 为viewpager配置适配器
    ViewPagerAdapter();
    viewPagter.setAdapter(viewPagerAdapter);
    new Thread(new Runnable() {
        @Override
        public void run() {
            while (true) {
                SystemClock.sleep(2000);
                handler.sendEmptyMessage(index);
                if (index==fragments.size()-1) {
                    Message message=Message.obtain();
                    message.what=SHOW_BUTTON_VISIABLE;
                    handler.sendMessage(message);
                    break;
                }
                index++;
            }
        }
    }).start();
    btnLog.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            startActivity(new Intent(MainActivity.this, HomeActivity.class));
        }
    });

}



private void ViewPagerAdapter() {
    fragments = new ArrayList<Fragment>();
    fragments.add(new setUp1fragment());
    fragments.add(new setUp2fragment());
    fragments.add(new setUp3fragment());
    viewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager());



}

private void setView() {
    btnLog = (Button) findViewById(R.id.btn_log);
    viewPagter = (ViewPager) findViewById(R.id.viewPager);
}

/**
 * 为viewpager配置适配器
 * 
 *
 */
class ViewPagerAdapter extends FragmentPagerAdapter {

    public ViewPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int arg0) {
        return fragments.get(arg0);
    }

    @Override
    public int getCount() {
        return fragments.size();
    }

}

}
1.新建三个class extends Fragment 并加载碎片布局 :
public class setUp1fragment extends Fragment{

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.activity_setup1, null);
    return view ;
}

}
2.在activity中为viewpager配置adapter添加加载的fragment:
private void ViewPagerAdapter() {
fragments = new ArrayList();
fragments.add(new setUp1fragment());
fragments.add(new setUp2fragment());
fragments.add(new setUp3fragment());
viewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager());
}
3.开启线程new Thread(new Runnable() {
@Override
public void run() {
while (true) {
SystemClock.sleep(2000);
handler.sendEmptyMessage(index);
if (index==fragments.size()-1) {
Message message=Message.obtain();
message.what=SHOW_BUTTON_VISIABLE;
handler.sendMessage(message);
break;
}
index++;
}
}
}).start();
主线程中不能更新UI使用handler方法实现界面的跳转(SystemClock.sleep(2000)):系统睡眠两秒
4.handler 的用法我的其它博客里面有 不懂的话可以看一下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值