Javascript 用于自动更新数据的2个不同片段的选项卡,意图?

Javascript 用于自动更新数据的2个不同片段的选项卡,意图?,javascript,android,android-fragments,android-intent,Javascript,Android,Android Fragments,Android Intent,这里有一个用于2个片段的选项卡,在第一个片段单击按钮保存时,它将执行保存数据并停留在当前页面,但当我将选项卡切换到第二个页面,即第二个片段时,数据不会更新,然后我需要关闭我的应用程序并打开第二个页面片段,然后只更新数据,我如何解决这个问题,我不需要关闭我的应用程序时,标签到第二页,并获得自动更新的数据在第二页?使用意图 下面的代码来自第1个片段 public class KeyInWeightF extends Fragment implements View.OnClickListener

这里有一个用于2个片段的选项卡,在第一个片段单击按钮保存时,它将执行保存数据并停留在当前页面,但当我将选项卡切换到第二个页面,即第二个片段时,数据不会更新,然后我需要关闭我的应用程序并打开第二个页面片段,然后只更新数据,我如何解决这个问题,我不需要关闭我的应用程序时,标签到第二页,并获得自动更新的数据在第二页?使用意图

下面的代码来自第1个片段

 public class KeyInWeightF extends Fragment implements View.OnClickListener {


        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            contentView=inflater.inflate(R.layout.daily_weight_fragement, container, false);


            btnSave = (Button) contentView.findViewById(R.id.button_save);

            dbconnection = new SQLControlerWeight(getActivity());
            dbconnection.openDatabase();
            btnSave.setOnClickListener(this);

            return contentView;
        }

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

        }

        @Override
        public void onClick(View v){

            switch (v.getId()){


                case R.id.button_save:

                        if (btnTime.getText().toString().equals("")||btnDate.getText().toString().equals("")
                    ||kgnum.getText().toString().equals("")||bf.getText().toString().equals("")){
                            Toast.makeText(getActivity(), "Please insert all the detail!", Toast.LENGTH_LONG).show();
                        }
                        else{
                            String kgn = kgnum.getText().toString()+" kg";
                            String bodyfat = bf.getText().toString()+" %";
                            String date = btnDate.getText().toString();
                            String time = btnTime.getText().toString();
                            String comment = comm.getText().toString();
                            dbconnection.insertNote(kgn, bodyfat, date, time, comment);
                            Toast.makeText(getActivity(), "Suggest", Toast.LENGTH_LONG).show();

                          // Did i need add some code "Intent "here ??
                        }


                    break;
        }

    }
     }
这是第二个片段

   public class HistoryF  extends Fragment implements YourFragmentInterface{

    View contentView;
    ListView list;
    SQLControlerWeight dbconnection;
    TextView weight_num, date_num, time_num, bf_num, comment,weight_ID;
    private SimpleCursorAdapter adapter;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        contentView = inflater.inflate(R.layout.history_fragment, container, false);

        dbconnection = new SQLControlerWeight(getActivity());
        dbconnection.openDatabase();
        list = (ListView) contentView.findViewById(R.id.listViewWeight);


        list.setAdapter(adapter);


        list.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView parent, View view, int position, long id) {
                weight_ID = (TextView) view.findViewById(R.id.weight_id);
                weight_num = (TextView) view.findViewById(R.id.weight_num);
                bf_num = (TextView) view.findViewById(R.id.bf_num);
                date_num = (TextView) view.findViewById(R.id.date_num);
                time_num = (TextView) view.findViewById(R.id.time_num);
                comment = (TextView) view.findViewById(R.id.comment_text);

                String weightId = weight_ID.getText().toString();
                String wn = weight_num.getText().toString();
                String bfn = bf_num.getText().toString();
                String dn = date_num.getText().toString();
                String tn = time_num.getText().toString();
                String cm = comment.getText().toString();

                Intent modify_intent = new Intent(getActivity(), Update_detail_info.class);

                modify_intent.putExtra("weightId", weightId);
                modify_intent.putExtra("dateNum", dn);
                modify_intent.putExtra("timeNum", tn);
                modify_intent.putExtra("weightNum", wn);
                modify_intent.putExtra("bodyFatNum", bfn);
                modify_intent.putExtra("comment", cm);

                startActivity(modify_intent);
            }
        });

    return contentView;
    }
    @Override
    public void fragmentBecameVisible() {

        Cursor cursor = dbconnection.readNote();
        String[] from = new String[]{
                DBHelperNote.WEIGHT_ID,
                DBHelperNote.WEIGHT_NUM,
                DBHelperNote.BODY_FAT,
                DBHelperNote.WEIGHT_DATE,
                DBHelperNote.WEIGHT_TIME,
                DBHelperNote.WEIGHT_COMMENTS

        };
        int[] to = new int[]{
                R.id.weight_id,
                R.id.weight_num,
                R.id.bf_num,
                R.id.date_num,
                R.id.time_num,
                R.id.comment_text
        };

        adapter = new SimpleCursorAdapter(
                contentView.getContext(), R.layout.history, cursor, from, to,0);

        adapter.notifyDataSetChanged();
    }
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }


}
这是我的主要活动:

public class MainActivity extends AppCompatActivity {

    Toolbar toolbar;
    TabLayout tabLayout;
    ViewPager viewPager;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

        viewPager = (ViewPager) findViewById(R.id.viewpager);
        setupViewPager(viewPager);

        tabLayout = (TabLayout) findViewById(R.id.tablayout);
        tabLayout.setupWithViewPager(viewPager);


    }
    private void setupViewPager(ViewPager viewPager) {
        ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
        adapter.addFragment(new KeyInWeightF(), "TRACK");
        adapter.addFragment(new HistoryF(), "HISTORY");
        adapter.addFragment(new AnalysisF(), "GRAPH");
        viewPager.setAdapter(adapter);
    }

    class ViewPagerAdapter extends FragmentPagerAdapter {
        private final List<Fragment> mFragmentList = new ArrayList<>();
        private final List<String> mFragmentTitleList = new ArrayList<>();

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

        @Override
        public Fragment getItem(int position) {
            return mFragmentList.get(position);
        }

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

        public void addFragment(Fragment fragment, String title) {
            mFragmentList.add(fragment);
            mFragmentTitleList.add(title);
        }

        @Override
        public CharSequence getPageTitle(int position) {
            return mFragmentTitleList.get(position);
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();

        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}
抱歉,onResume()可能无法正确用于选项卡。我认为您可以实现此问题中解释的

创建一个界面,如下所示:

public interface YourFragmentInterface {
    void fragmentBecameVisible();
}
public class HistoryF  extends Fragment implements YourFragmentInterface { 

    View contentView;
    ListView list;
    SQLControlerWeight dbconnection;
    TextView weight_num, date_num, time_num, bf_num, comment,weight_ID;
    private SimpleCursorAdapter adapter; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        contentView = inflater.inflate(R.layout.history_fragment, container, false);

        dbconnection = new SQLControlerWeight(getActivity());
        dbconnection.openDatabase();
        list = (ListView) contentView.findViewById(R.id.listViewWeight);


        list.setAdapter(adapter);


        list.setOnItemClickListener(new OnItemClickListener() {
            @Override 
            public void onItemClick(AdapterView parent, View view, int position, long id) {
                weight_ID = (TextView) view.findViewById(R.id.weight_id);
                weight_num = (TextView) view.findViewById(R.id.weight_num);
                bf_num = (TextView) view.findViewById(R.id.bf_num);
                date_num = (TextView) view.findViewById(R.id.date_num);
                time_num = (TextView) view.findViewById(R.id.time_num);
                comment = (TextView) view.findViewById(R.id.comment_text);

                String weightId = weight_ID.getText().toString();
                String wn = weight_num.getText().toString();
                String bfn = bf_num.getText().toString();
                String dn = date_num.getText().toString();
                String tn = time_num.getText().toString();
                String cm = comment.getText().toString();

                Intent modify_intent = new Intent(getActivity(), Update_detail_info.class);

                modify_intent.putExtra("weightId", weightId);
                modify_intent.putExtra("dateNum", dn);
                modify_intent.putExtra("timeNum", tn);
                modify_intent.putExtra("weightNum", wn);
                modify_intent.putExtra("bodyFatNum", bfn);
                modify_intent.putExtra("comment", cm);

                startActivity(modify_intent);
            } 
        }); 

    return contentView;
    } 

    @Override 
    public void fragmentBecameVisible() { 

        Cursor cursor = dbconnection.readNote();
        String[] from = new String[]{
                DBHelperNote.WEIGHT_ID, 
                DBHelperNote.WEIGHT_NUM, 
                DBHelperNote.BODY_FAT, 
                DBHelperNote.WEIGHT_DATE, 
                DBHelperNote.WEIGHT_TIME, 
                DBHelperNote.WEIGHT_COMMENTS 

        }; 
        int[] to = new int[]{
                R.id.weight_id,
                R.id.weight_num,
                R.id.bf_num,
                R.id.date_num,
                R.id.time_num,
                R.id.comment_text
        }; 

        adapter = new SimpleCursorAdapter( 
                contentView.getContext(), R.layout.history, cursor, from, to,0);

        adapter.notifyDataSetChanged(); 
    } 
    @Override 
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    } 
在第二个fragmnet中实现上述接口,如下所示:

public interface YourFragmentInterface {
    void fragmentBecameVisible();
}
public class HistoryF  extends Fragment implements YourFragmentInterface { 

    View contentView;
    ListView list;
    SQLControlerWeight dbconnection;
    TextView weight_num, date_num, time_num, bf_num, comment,weight_ID;
    private SimpleCursorAdapter adapter; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        contentView = inflater.inflate(R.layout.history_fragment, container, false);

        dbconnection = new SQLControlerWeight(getActivity());
        dbconnection.openDatabase();
        list = (ListView) contentView.findViewById(R.id.listViewWeight);


        list.setAdapter(adapter);


        list.setOnItemClickListener(new OnItemClickListener() {
            @Override 
            public void onItemClick(AdapterView parent, View view, int position, long id) {
                weight_ID = (TextView) view.findViewById(R.id.weight_id);
                weight_num = (TextView) view.findViewById(R.id.weight_num);
                bf_num = (TextView) view.findViewById(R.id.bf_num);
                date_num = (TextView) view.findViewById(R.id.date_num);
                time_num = (TextView) view.findViewById(R.id.time_num);
                comment = (TextView) view.findViewById(R.id.comment_text);

                String weightId = weight_ID.getText().toString();
                String wn = weight_num.getText().toString();
                String bfn = bf_num.getText().toString();
                String dn = date_num.getText().toString();
                String tn = time_num.getText().toString();
                String cm = comment.getText().toString();

                Intent modify_intent = new Intent(getActivity(), Update_detail_info.class);

                modify_intent.putExtra("weightId", weightId);
                modify_intent.putExtra("dateNum", dn);
                modify_intent.putExtra("timeNum", tn);
                modify_intent.putExtra("weightNum", wn);
                modify_intent.putExtra("bodyFatNum", bfn);
                modify_intent.putExtra("comment", cm);

                startActivity(modify_intent);
            } 
        }); 

    return contentView;
    } 

    @Override 
    public void fragmentBecameVisible() { 

        Cursor cursor = dbconnection.readNote();
        String[] from = new String[]{
                DBHelperNote.WEIGHT_ID, 
                DBHelperNote.WEIGHT_NUM, 
                DBHelperNote.BODY_FAT, 
                DBHelperNote.WEIGHT_DATE, 
                DBHelperNote.WEIGHT_TIME, 
                DBHelperNote.WEIGHT_COMMENTS 

        }; 
        int[] to = new int[]{
                R.id.weight_id,
                R.id.weight_num,
                R.id.bf_num,
                R.id.date_num,
                R.id.time_num,
                R.id.comment_text
        }; 

        adapter = new SimpleCursorAdapter( 
                contentView.getContext(), R.layout.history, cursor, from, to,0);

        adapter.notifyDataSetChanged(); 
    } 
    @Override 
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    } 
onCreate()中的main活动中执行以下操作:

@Override 
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

        viewPager = (ViewPager) findViewById(R.id.viewpager);
        setupViewPager(viewPager);

        tabLayout = (TabLayout) findViewById(R.id.tablayout);
        tabLayout.setupWithViewPager(viewPager);
        viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override 
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            } 

            @Override 
            public void onPageSelected(int position) {
                 YourFragmentInterface fragment = (YourFragmentInterface)              mPagerAdapter.instantiateItem(mViewPager, position);
                if (fragment != null) {
                    fragment.fragmentBecameVisible();
                } 
            } 

            @Override 
            public void onPageScrollStateChanged(int state) {

            } 
        }); 

    } 
在实现接口时,您将使用函数fragmentBecameVisible()


因此,只要片段处于活动状态,它就会调用函数fragmentBecameVisible()。这将更新您的选项卡。我认为这解决了您的问题

尝试在fragmnet的OnResume()中运行第二个fragmnet的更新。它是如何工作的?你能展示一下代码吗?我应该把它放在哪里?我无法理解你的意思我仍然无法理解你的意思,是我需要将代码移到上面,并将其作为另一个函数?但是我需要把fragmentBecameVisible()函数放在我的代码中的什么地方呢?按照我给出的答案创建一个接口。你能帮我检查一下吗,我会上传帖子更新我的帖子,我会跟随你的公会,但是最后的浏览代码我应该添加到哪里?在我的主要活动中?但是我的主要活动查看页面代码与此不同,很抱歉忘记发布我的主要活动代码,请问您得到答案了吗?