如何覆盖android sherlock片段中按下的后退键

时间:2013-10-27 15:36:59

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

我想覆盖反向按键事件并用先前的sherlock片段替换当前的sherlock片段。我没有找到任何方法这样做。我不确定是否可能。 我使用了以下方法,但它没有用,

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

以下是sherlock片段的完整代码:

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

任何人都可以告诉我如果可能的话怎么做。

谢谢!

2 个答案:

答案 0 :(得分:0)

尝试这样做

on onCreateView methode添加此代码

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

答案 1 :(得分:0)

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

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

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

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