GVKun编程网logo

android – 如何在片段中实现onBackPressed()&intents?

28

本文的目的是介绍android–如何在片段中实现onBackPressed()&intents?的详细情况,我们将通过专业的研究、有关数据的分析等多种方式,同时也不会遗漏关于androidgetSup

本文的目的是介绍android – 如何在片段中实现onBackPressed()&intents?的详细情况,我们将通过专业的研究、有关数据的分析等多种方式,同时也不会遗漏关于android getSupportActionBar()在片段中返回null、Android L:ActionBar setHideOnContentScrollEnabled、Android NDK:如何在没有java的情况下覆盖NativeActivity中的onBackPressed?、Android onBackPressed / onUserLeaveHint的知识。

本文目录一览:

android – 如何在片段中实现onBackPressed()&intents?

android – 如何在片段中实现onBackPressed()&intents?

我知道onBackpressed()是一个活动中的方法但是,我想在片段中使用这些功能,这样当按下后退按钮时,它会通过Intent重定向到另一个活动.这有什么解决方案吗?

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);
}

 }

解决方法:

覆盖onKeyDown而不是onBackpressed.不必要 .但这对我有用

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;
}

android getSupportActionBar()在片段中返回null

android getSupportActionBar()在片段中返回null

UPDATE

我没有提到将ToolBar与ActionBaractivity一起使用的任何内容.这就是我总是得到空指针异常的原因.对于那些面临同样问题please refere this answer的人

我有这个片段代码来更改片段时更改支持操作栏的外观.

@Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        setHasOptionsMenu(true);
        mActionBar = ((ActionBaractivity)getActivity()).getSupportActionBar();
        SpannableString s = new SpannableString("Dashboard");
        s.setSpan(new ForegroundColorSpan(getResources().getColor(R.color.app_blue_text)), 0, s.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE);
        s.setSpan(new TypefaceSpan(getActivity(), "Optima-Regular.ttf"), 0, s.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

        if( null!= mActionBar){
            mActionBar.setElevation(0);
            mActionBar.setTitle(s);
        }
    }

我已经提到了有关如何解决此错误的先前/类似问题.这些解决方案建议在onActivityCreated()方法中更改操作栏外观.我也试过onAttach().似乎没有工作.我使用了支持操作栏来保持向后兼容性.活动也相应地转换为ActionBaractivity.

完整的代码非常冗长,所以我跳过了它.如果需要,我可以发布完整的代码并更新问题以及更多细节.

错误日志

Caused by: java.lang.NullPointerException
            at com.example.testapp.fragments.NavigationDrawerFragment.onActivityCreated(NavigationDrawerFragment.java:215) 

第215行是:mActionBar.setElevation(0);

解决方法:

我错过了在这个问题中提及的更多信息.这就是其他优秀的SO用户无法正确回答的原因.所以我在这里自己回答.

我用ToolBar代替了常规的ActionBar.使用ToolBar时,必须将其设置为ActionBar.所以做 –

toolbar = (Toolbar) getActivity().findViewById(toolbarId);
((ActionBaractivity)getActivity()).setSupportActionBar(toolbar);

之后我可以轻松改变标题和外观 –

((ActionBaractivity)getActivity()).getSupportActionBar().setTitle(s);

只需记住在实际使用片段中的操作栏之前将工具栏设置为操作栏.

Android L:ActionBar setHideOnContentScrollEnabled

Android L:ActionBar setHideOnContentScrollEnabled

@H_301_1@
我正在尝试在新的L API中使用setHideOnContentScrollEnabled和setHideOffset.但是,所提到的功能似乎都没有任何效果.其他人遇到过同样的问题?

我的Activity的布局是一个ScrollView,TextView显示大量文本,因此有def滚动.我还根据文档的要求添加了FEATURE_ACTION_BAR_OVERLAY

getwindow().requestFeature(Window.FEATURE_ACTION_BAR_OVERLAY);
    setContentView(R.layout.main_activity);

    getActionBar().setHideOnContentScrollEnabled(true);
    getActionBar().setHideOffset(40);

解决方法

请注意:

If enabled,the action bar will scroll out of sight along with a
nested scrolling child view’s content.

View.setnestedScrollingEnabled(布尔)

Android NDK:如何在没有java的情况下覆盖NativeActivity中的onBackPressed?

Android NDK:如何在没有java的情况下覆盖NativeActivity中的onBackPressed?

我的应用程序完全使用NativeActivity以C/C++编写,它没有 Java代码(基于“本机活动”NDK示例).按“后退”按钮将其关闭(破坏活动),但我需要此按钮的其他行为,因为我有自己的UI和通过OpenGL显示的菜单.

As I read,为了改变“后退”按钮的行为,我需要覆盖Java活动类的onBackpressed()方法.但是我不使用Java,我可以从C/C++到达这个方法来覆盖它吗?

如果没有,是否有其他方法使用NDK处理“后退”按钮,没有Java代码?

解决方法

解决:为防止默认“后退”按钮行为,处理键事件时返回1就足够了:
int32_t app_handle_event(struct android_apP* app,AInputEvent* event) {
    if (AKeyEvent_getKeyCode(event) == AKEYCODE_BACK) {
        // actions on back key
        return 1; // <-- prevent default handler
    };
    // ...
    return 0;
}

Android onBackPressed / onUserLeaveHint

Android onBackPressed / onUserLeaveHint

真的需要一点建议.我有一个Activity在我的游戏中运行,当用户按下Back按钮时,它将使用onBackpressed()方法退回到主菜单,但我也会覆盖onUserLeaveHint()以执行相同的操作按下按钮或接到电话.但是,当按下“返回”按钮时也会调用此方法,这意味着主菜单意图被调用两次,其中一个在另一个上面.

如果有人知道如何解决这个问题或更好的处理这两个事件的方式,那将非常感激.

谢谢.

解决方法

onUserLeaveHint()是一个受保护的方法,作为活动的其他生命周期方法,如果你正在处理onUserLeaveHint,这将处理以下情况

>当用户点击主页键时
>当用户按下键时
>当用户点击信号器栏时

基本上它暗示用户试图离开你的活动.这意味着如果您正在处理onUserLeaveHint(),则不需要在代码中处理onBackpressed().

我们今天的关于android – 如何在片段中实现onBackPressed()&intents?的分享就到这里,谢谢您的阅读,如果想了解更多关于android getSupportActionBar()在片段中返回null、Android L:ActionBar setHideOnContentScrollEnabled、Android NDK:如何在没有java的情况下覆盖NativeActivity中的onBackPressed?、Android onBackPressed / onUserLeaveHint的相关信息,可以在本站进行搜索。

本文标签: