【问题标题】:How to override back key pressed in android sherlock fragment如何覆盖在android sherlock片段中按下的后退键
【发布时间】:2013-10-27 15:36:59
【问题描述】:

我想覆盖 backkey press 事件并用之前的 sherlock 片段替换当前的 sherlock 片段。我没有找到任何方法来做到这一点。我不确定这是否可能。 我用了下面的方法,但是没用,

  public boolean onKeyDown(int keyCode, KeyEvent event) {
    if ((keyCode == KeyEvent.KEYCODE_BACK)) {
         Toast.makeText(getActivity(),"Clicked", Toast.LENGTH_SHORT).show();
    }
    return true;
}

这里是夏洛克片段的完整代码:

import android.os.Bundle;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.Toast;

import com.actionbarsherlock.app.SherlockFragment;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuInflater;
import com.actionbarsherlock.view.MenuItem;

 public class MyTasksFragment extends SherlockFragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
    View view=inflater.inflate(R.layout.mytask_fragment_layout, container, false);
    setHasOptionsMenu(true);
    return view;
   }
  }

如果可能的话,谁能告诉我如何做到这一点。

谢谢!

【问题讨论】:

    标签: android android-layout android-intent android-listview android-fragments


    【解决方案1】:

    尝试这样做

    onCreateView方法上添加此代码

    getView().setOnKeyListener( new OnKeyListener()
    {
        @Override
        public boolean onKey( View v, int keyCode, KeyEvent event )
        {
            if( keyCode == KeyEvent.KEYCODE_BACK )
            {
                Toast.makeText(getActivity(),"Clicked", Toast.LENGTH_SHORT).show();
            }
            return false;
        }
    } );
    

    【讨论】:

      【解决方案2】:

      您可以在父活动上使用此代码返回上一个片段。 覆盖父 Activity 上的 onbackpressed 函数。

      @Override
          public void onBackPressed() 
          {
            if(getFragmentManager().getBackStackEntryCount() > 0)
              getFragmentManager().popBackStack();
            else
             super.onBackPressed();
          }
      

      还将您的片段交易代码更改为:

      fragmentManager.beginTransaction().replace(R.id.container, frag).addToBackStack(null).commit();
      

      【讨论】:

        猜你喜欢
        • 2023-03-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-18
        相关资源
        最近更新 更多