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

问题描述 投票:1回答:2

我想覆盖backkey按下事件,并用先前的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
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;
    }
} );

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();
© www.soinside.com 2019 - 2024. All rights reserved.