NTSDB
Wikey丶
采纳率0%
2016-06-14 16:14 阅读 1.2k

安卓中的viewpager用view填充页面,时间处理怎么办?

最近做了一个项目,用到一个viewpager,我知道可以用两种方式填充每个页面,fragment和view,我图方便,采用了view的方式,可是当我控件都加载在每个view的布局文件里面的时候,我发现,我不能处理他们的事件,比如说我在某一页中有一个imageview,我要点击它并换掉他的背景,我就在主要的mainactivity.java中初始化了控件并设置了点击事件,此时运行后程序崩溃,我分析一遍觉得是在主maniactivity中这样写,view不可能得到改变,因为它在程序运行初期就已经在oncreate中被添加到了list中,后面再怎么处理都不可能被改变,除非只是做一些展示作用,比如放几张照片之类的. 而对于我的项目,我需要处理每一页的很多点击事件,而又不可能只在一个mainacticity中实现,所以我觉的我是不是该改用fragment的方式去实现我的目的,请大神能给一个合理的说明,如果可以,请帮忙说下view和fragment的处理事件都应该怎么搞,另外我想知道正常的项目中包应该如何划分?多谢啦

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

6条回答 默认 最新

  • bdmh bdmh 2016-06-15 00:21

    应该不是,,你应该先搞清楚具体的错误信息,然后对着logcat日志再找原因

    点赞 评论 复制链接分享
  • qq_28514109 qq_28514109 2016-06-15 01:27

    把错误log 贴出来 可以试着解决

    点赞 评论 复制链接分享
  • github_32902495 Garnet-F 2016-06-15 04:46

    你要确定fragment 已经获取到控件了,在确定fragment已经获取控件的情况下可以将view部分的逻辑写到fragment里面的

    点赞 评论 复制链接分享
  • NTSDB Wikey丶 2016-06-15 13:44

    这个是我的maninactivity文件,大多数我都做了标识,希望大神可以帮忙看看,我不知道用view的方式怎么去处理那些点击事件
    package cn.iot.main;

    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;

    import cn.iot.sildingmenu.SlidingMenu;
    import cn.iot.ui_design.R;
    import android.app.Activity;
    import android.os.Bundle;
    import android.support.v4.view.ViewPager;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.MotionEvent;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.view.View.OnTouchListener;
    import android.view.Window;
    import android.widget.ArrayAdapter;
    import android.widget.ImageView;
    import android.widget.ListView;
    import android.widget.SimpleAdapter;
    import android.widget.TextView;
    import android.widget.Toast;

    public class MainActivity extends Activity implements OnClickListener {
    /**
    * 目前的问题:
    * (1)蓝牙连接问题、
    * (2)首页中listview和viewpager的侧滑冲突问题、
    * (3)布局规划问题
    */
    public SlidingMenu mleftMenu;
    private ListviewList;
    private ViewPager viewpager;

    private View view_beiwang;
    private View view_search;
    private View view_firstpage;
    private View view_forgotten;
    private View view_citysearch;
    
    private TextView tv1;
    private TextView tv2;
    private TextView tv3;
    private TextView tv4;
    private TextView tv5;
    
    private ImageView image_connect;
    
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_main);
        mleftMenu = (SlidingMenu) findViewById(R.id.id_menu);  
        image_connect= (ImageView) findViewById(R.id.image_connect);
    
    
        viewList=new ArrayList<View>();
        //初始化并转化为view对象
        view_beiwang = View.inflate(this, R.layout.view_beiwang,null);
        view_search = View.inflate(this, R.layout.view_search,null);
        view_firstpage = View.inflate(this, R.layout.view_firstpage,null);
        view_forgotten = View.inflate(this, R.layout.view_forgotten,null);
        view_citysearch = View.inflate(this, R.layout.view_citysearch,null);
    
        viewList.add(view_beiwang);
        viewList.add(view_search);
        viewList.add(view_firstpage);
        viewList.add(view_forgotten);
        viewList.add(view_citysearch);
    
        //初始化viewPager
        //设置viewpager的滑动事件
        viewpager = (ViewPager) findViewById(R.id.viewpager);
        viewpager.setOnTouchListener(new OnTouchListener() {        
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                // TODO Auto-generated method stub
                v.getParent().requestDisallowInterceptTouchEvent(true);//这一句是告诉父类事件,不要去处理我的touch事件
                return false;
            }
        });
    
    
        //建立适配器的对象
        MypagerAdapter adapter = new MypagerAdapter(viewList);
        //给viewpager添加适配器
        viewpager.setAdapter(adapter);
    
        //初始化五个textview
        tv1 = (TextView) findViewById(R.id.textview_beiwang);
        tv2 = (TextView) findViewById(R.id.textview_search);
        tv3 = (TextView) findViewById(R.id.textview_firstpage);
        tv4 = (TextView) findViewById(R.id.textview_forgotton);
        tv5 = (TextView) findViewById(R.id.textview_citysearch);
        //添加点击事件
        tv1.setOnClickListener(this);
        tv2.setOnClickListener(this);
        tv3.setOnClickListener(this);
        tv4.setOnClickListener(this);
        tv5.setOnClickListener(this);
    
    }
    //用来为首页Imageview添加点击事件
    public void bt_connect(View v){
        //考虑此处加一个fragment或者view
        Toast.makeText(this, "我是连接按钮", Toast.LENGTH_SHORT).show();
    
        image_connect.setImageDrawable(getResources().getDrawable(R.drawable.connet));
    }
    
    //这是侧滑菜单的点击事件
    public void toggleMenu(View v){
            mleftMenu.toggle();
    }
    //每个底部按钮对应的view
    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        switch (v.getId()) {
        case R.id.textview_beiwang:
            viewpager.setCurrentItem(0,false);
            break;
        case R.id.textview_search:
            viewpager.setCurrentItem(1,false);
            break;
        case R.id.textview_firstpage:
            viewpager.setCurrentItem(2,false);
            break;
        case R.id.textview_forgotton:
            viewpager.setCurrentItem(3,false);
            break;
        case R.id.textview_citysearch:
            viewpager.setCurrentItem(4,false);
            break;
        }   
    }
    

    }

    
    
    点赞 评论 复制链接分享
  • NTSDB Wikey丶 2016-06-15 13:46

    这张图片是我的主界面图片,有侧滑菜单和底部view还有viewpager组成:图片说明

    点赞 评论 复制链接分享
  • NTSDB Wikey丶 2016-06-15 13:53

    我在首页做了一个,点击连接然后切换图片的事件,这是我点击首页上的连接的时候出现的错误:图片说明

    点赞 评论 复制链接分享

相关推荐