如何实现onBack pressed()及在片段意图? [英] How to implement onBackPressed() & intents in fragment?

查看:125
本文介绍了如何实现onBack pressed()及在片段意图?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我知道onBack pressed()是活性的方法,但是,我想用在片段的功能,例如,当后退按钮是pressed,它就会通过意向重定向到另一个活动。有没有什么解决办法?

 公共类News_Events_fragment扩展片段{
ProgressDialog PD;
ListView控件LV1;
共享preferences共享preferences = NULL;
INT NotiCount;
TextView的txt_title,txt_msg,TextView的;
上下文语境;
意向意图;
ArrayList的< SliderMsgTitleModel> CurrentOfficersPastList;
NewsActivityAdapter pastAdapter;

@覆盖
公共查看onCreateView(LayoutInflater充气,容器的ViewGroup,
        捆绑savedInstanceState){

    上下文=(上下文)getActivity();

    查看rootView = inflater.inflate(R.layout.activity_news,集装箱,假);

    新的AsyncTask<虚空,虚空,ArrayList的< SliderMsgTitleModel>>(){

        在preExecute保护无效(){
            PD =新ProgressDialog(getActivity());
            pd.setCancelable(真正的);
            pd.setTitle(UPOA);
            pd.setMessage(请稍候,装载数据......);
            pd.show();
        }

        @覆盖
        受保护的ArrayList< SliderMsgTitleModel> doInBackground(
                虚空...... PARAMS){
            的System.out.println(背景);
            CurrentOfficersPastList =新的ArrayList< SliderMsgTitleModel>();
            对选定的导航抽屉的项目//显示视图
            ParseQuery<的parseObject>查询= ParseQuery.getQuery(信息);
            query.whereEqualTo(featured_status,真正的);
            // query.whereEqualTo(push_status,真正的);

            query.orderByDescending(updatedAt);

            query.selectKeys(Arrays.asList(标题));
            query.selectKeys(Arrays.asList(信息));
            尝试 {
                query.setCachePolicy(ParseQuery.CachePolicy.NETWORK_ELSE_CACHE);
                名单<的parseObject>结果= query.find();
                的for(int i = 0; I< results.size();我++){
                    的parseObject对象= results.get(ⅰ);
                    CurrentOfficersPastList.add(新SliderMsgTitleModel(
                            object.getString(标题),对象
                                    .getString(消息)));
                    的System.out.println(标题==
                            + object.getString(标题)+&放大器;&安培;消息
                            + object.getString(信息)+大小
                            + CurrentOfficersPastList.size());

                }
            }赶上(例外五){
                e.getMessage();
            }
            pd.dismiss();

            返回CurrentOfficersPastList;
        }

        @燮pressWarnings(未登记)
        @覆盖
        保护无效onPostExecute(ArrayList中< SliderMsgTitleModel>值){

            pd.dismiss();
            / *意图ENT =新的意向书(getActivity(),NewsActivity.class);
            ent.putExtra(新闻列表(ArrayList中< SliderMsgTitleModel>)值);
            startActivity(ENT);
            的System.out.println(价值是+ value.size()); * /

            CurrentOfficersPastList =新的ArrayList< SliderMsgTitleModel>();
            CurrentOfficersPastList =价值;
            LV1 =(ListView控件)getActivity()findViewById(R.id.list_title)。
            pastAdapter =新NewsActivityAdapter(getActivity(),R.layout.activity_news_txt,CurrentOfficersPastList);
            lv1.setAdapter(pastAdapter);

        }
    }。执行();

    返回rootView;
}

公共无效onBack pressed(){
    // TODO自动生成方法存根
    //super.onBack$p$pssed();
    //Toast.makeText(getApplicationContext(),咔嚓,2000年).show();
            字符串cameback =CameBack;
            意图=新的意图(getActivity(),HomeActivity.class);
            intent.putExtra(Comingback,cameback);
            startActivity(意向);
}

 }
 

解决方案

覆盖onBack pressed中的onkeydown代替。不必要 。但是,这对我的作品

 公共布尔的onkeydown(INT键code,KeyEvent的事件){

        开关(钥匙code){
            案例KeyEvent.KEY code_BACK:
                字符串cameback =CameBack;
                意图=新的意图(getActivity(),HomeActivity.class);
                intent.putExtra(Comingback,cameback);
                startActivity(意向);
                返回true
    }
            返回false;
}
 

I know that onBackPressed() is a method in activity but, I want to use the functionality in fragments such that when back button is pressed, it gets redirected to another activity via Intent. Is there any solution to this ?

public class News_Events_fragment extends Fragment {
ProgressDialog pd;
ListView lv1;
SharedPreferences sharedPreferences = null;
int NotiCount;
TextView txt_title, txt_msg, textView;
Context context;
Intent intent ;
ArrayList<SliderMsgTitleModel> CurrentOfficersPastList;
NewsActivityAdapter pastAdapter;

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

    context = (Context) getActivity();

    View rootView = inflater.inflate(R.layout.activity_news, container, false);

    new AsyncTask<Void, Void, ArrayList<SliderMsgTitleModel>>() {

        protected void onPreExecute() {
            pd = new ProgressDialog(getActivity());
            pd.setCancelable(true);
            pd.setTitle("UPOA");
            pd.setMessage("Please wait,loading the data...");
            pd.show();
        }

        @Override
        protected ArrayList<SliderMsgTitleModel> doInBackground(
                Void... params) {
            System.out.println("In Background");
            CurrentOfficersPastList = new ArrayList<SliderMsgTitleModel>();
            // display view for selected nav drawer item
            ParseQuery<ParseObject> query = ParseQuery.getQuery("message");
            query.whereEqualTo("featured_status", true);
            // query.whereEqualTo("push_status", true);

            query.orderByDescending("updatedAt");

            query.selectKeys(Arrays.asList("title"));
            query.selectKeys(Arrays.asList("message"));
            try {
                query.setCachePolicy(ParseQuery.CachePolicy.NETWORK_ELSE_CACHE);
                List<ParseObject> results = query.find();
                for (int i = 0; i < results.size(); i++) {
                    ParseObject object = results.get(i);
                    CurrentOfficersPastList.add(new SliderMsgTitleModel(
                            object.getString("title"), object
                                    .getString("message")));
                    System.out.println("title is=="
                            + object.getString("title") + "&& message is"
                            + object.getString("message") + "size is"
                            + CurrentOfficersPastList.size());

                }
            } catch (Exception e) {
                e.getMessage();
            }
            pd.dismiss();

            return CurrentOfficersPastList;
        }

        @SuppressWarnings("unchecked")
        @Override
        protected void onPostExecute(ArrayList<SliderMsgTitleModel> value) {

            pd.dismiss();
            /*Intent ent = new Intent(getActivity(), NewsActivity.class);
            ent.putExtra("NEWSLIST", (ArrayList<SliderMsgTitleModel>) value);
            startActivity(ent);
            System.out.println("Value is" + value.size());*/

            CurrentOfficersPastList = new ArrayList<SliderMsgTitleModel>();
            CurrentOfficersPastList = value;
            lv1 = (ListView) getActivity().findViewById(R.id.list_title);
            pastAdapter = new NewsActivityAdapter(getActivity(), R.layout.activity_news_txt, CurrentOfficersPastList);
            lv1.setAdapter(pastAdapter);

        }
    }.execute();

    return rootView;
}

public void onBackPressed() {
    // TODO Auto-generated method stub
    //super.onBackPressed();
    //Toast.makeText(getApplicationContext(), "click",2000).show();
            String cameback="CameBack";
            intent = new Intent(getActivity(),HomeActivity.class);
            intent.putExtra("Comingback", cameback);
            startActivity(intent);
}

 }

解决方案

Override onKeyDown instead of onBackPressed. Not necessarily . But this works for me

public boolean onKeyDown(int keyCode, KeyEvent event) {

        switch (keyCode) {
            case KeyEvent.KEYCODE_BACK:
                String cameback="CameBack";
                intent = new Intent(getActivity(),HomeActivity.class);
                intent.putExtra("Comingback", cameback);
                startActivity(intent);
                return true
    }
            return false;
}

这篇关于如何实现onBack pressed()及在片段意图?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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