我想覆盖反向按键事件并用先前的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;
}
}
任何人都可以告诉我如果可能的话怎么做。
谢谢!
答案 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();