1

我想覆盖 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;
   }
  }

如果可能的话,任何人都可以告诉我如何做到这一点。

谢谢!

4

2 回答 2

0

尝试这样做

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;
    }
} );
于 2013-10-28T09:25:50.940 回答
0

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

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

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

fragmentManager.beginTransaction().replace(R.id.container, frag).addToBackStack(null).commit();
于 2019-12-16T10:05:07.097 回答