我想覆盖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;
}
}
如果可能,请告诉我该怎么做。
谢谢!
尝试这样做
在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;
}
} );
您可以在父活动上使用此代码返回上一个片段。覆盖父活动的onbackpresssed函数。
@Override
public void onBackPressed()
{
if(getFragmentManager().getBackStackEntryCount() > 0)
getFragmentManager().popBackStack();
else
super.onBackPressed();
}
也将您的片段交易代码更改为:
fragmentManager.beginTransaction().replace(R.id.container, frag).addToBackStack(null).commit();