Android 在相当于finish()的片段中检测后退按钮
我想问一下,当我试图返回到另一个片段时,我如何能够检测到 所以我有这个代码:Android 在相当于finish()的片段中检测后退按钮,android,android-fragments,back-button,Android,Android Fragments,Back Button,我想问一下,当我试图返回到另一个片段时,我如何能够检测到 所以我有这个代码: fragmentManager.replace(R.id.fragment_searched_data_xml, fragment).addToBackStack(null).commit(); 让我回到那个片段。现在的问题是: 当我按下当前片段的后退按钮以便返回初始片段时,我可以检测到它吗?? public static class FragmentMainClass extends Fragment {
fragmentManager.replace(R.id.fragment_searched_data_xml, fragment).addToBackStack(null).commit();
让我回到那个片段。现在的问题是:
当我按下当前片段的后退按钮以便返回初始片段时,我可以检测到它吗??
public static class FragmentMainClass extends Fragment {
int i;
public FragmentMainClass() {
}
public FragmentMainClass(int i) {
this.i = i;
}
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
final View rootView = inflater.inflate(
R.layout.fragment_searched_data, container, false);
TextView sn = (TextView) rootView.findViewById(R.id.stop_name);
TextView sc = (TextView) rootView.findViewById(R.id.stop_code);
String prefix = getArguments().getString("bussStopName");
if (sn != null && sc != null) {
if (prefix.contains("/")) {
if (prefix.contains("/ ")) {
sn.setText(prefix.replace("\"", "").split("/ ")[0] + "\n" + prefix.replace("\"", "").split("/ ")[1]);
sc.setText(getArguments().getString("bussStopCode"));
} else {
sn.setText(prefix.replace("\"", "").split("/")[0] + "\n" + prefix.replace("\"", "").split("/")[1]);
sc.setText(getArguments().getString("bussStopCode"));
}
} else {
sn.setPadding(20, 40, 0, 0);
sn.setText(prefix.replace("\"", ""));
sc.setText(getArguments().getString("bussStopCode"));
}
}
final LinearLayout child = (LinearLayout) rootView
.findViewById(R.id.search_result_data_box);
LayoutParams params = (LayoutParams) child.getLayoutParams();
//child.setVisibility(View.GONE);
// params.height = 0;
widthListView = container.getWidth();
rootView.setTranslationX(-container.getWidth());
rootView.animate().setStartDelay(300).translationX(0)
.withEndAction(new Runnable() {
@Override
public void run() {
conreq = new ConnnectionRequest("97", getArguments().getString("bussStopCode"));
//expand(child);
initializeResultList(rootView);
// rootView.setVisibility(View.INVISIBLE);
}
});
return rootView;
}
public static void expand(final View v) {
final int targtetHeight = v.getMeasuredHeight();
v.getLayoutParams().height = 0;
v.setVisibility(View.VISIBLE);
Animation a = new Animation() {
@Override
protected void applyTransformation(float interpolatedTime,
Transformation t) {
v.getLayoutParams().height = interpolatedTime == 1 ? LayoutParams.WRAP_CONTENT
: (int) (targtetHeight * interpolatedTime);
v.requestLayout();
}
@Override
public boolean willChangeBounds() {
return true;
}
};
// 1dp/ms
a.setDuration((int) (targtetHeight / v.getContext().getResources()
.getDisplayMetrics().density));
v.startAnimation(a);
}
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
}
public void initializeResultList(View v) {
result_list = (ListView) v.findViewById(R.id.list_view_results);
//(PullToRefreshListView) v.findViewById(R.id.list_view_results);;
final ResultDataCustomAdapter customAdapter = new ResultDataCustomAdapter(getActivity(), R.layout.pull_refresh_list_item, conreq.getCollectedData().getBusRouteSetData());
//prlv.prepareForRefresh();
((PullToRefreshListView) result_list).setOnRefreshListener(new OnRefreshListener() {
@Override
public void onRefresh() {
// Do work to refresh the list here.
new GetDataTask().execute();
}
});
result_list.setAdapter(customAdapter);
result_list.setVisibility(View.VISIBLE);
result_list.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> av, final View view,
final int i, long i2) {
view.animate().setDuration(500).translationX(widthListView).alpha(0).
withEndAction(new Runnable() {
@Override
public void run() {
//setResult(Activity.RESULT_OK,new Intent().putExtra("bussStopCode", data.get(i).getStopCode()).putExtra("bussStopName", data.get(i).getStopName()));
////int get 1
//data.remove(i);
int temporaryInteger = i;
//customAdapter.notifyDataSetChanged();
//view.setTranslationX(0);
Log.d("data",conreq.getCollectedData().getBusRouteSetData().get(temporaryInteger - 1).getRouteHeading());
Bundle bundle = new Bundle();
bundle.putString("busdestination", conreq.getCollectedData().getBusRouteSetData().get(temporaryInteger-1).getRouteHeading());
bundle.putString("busnumber", conreq.getCollectedData().getBusRouteSetData().get(temporaryInteger-1).getRouteNo());
Fragment fragment = new FragmentNextTripForStop();
fragment.setArguments(bundle);
FragmentTransaction fragmentManager = getFragmentManager().beginTransaction();
fragmentManager.setCustomAnimations(R.anim.left_right_anim_x_left,R.anim.left_right_anim_x_right);
fragmentManager.replace(R.id.fragment_searched_data_xml, fragment).addToBackStack(null).commit();
result_list.setVisibility(View.GONE);
// finish();
//overridePendingTransition(R.anim.right_left_anim_x_left,R.anim.right_left_anim_x_right);
}
});
}});
}
private class GetDataTask extends AsyncTask<Void, Void, String[]> {
@Override
protected String[] doInBackground(Void... params) {
// Simulates a background job.
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
;
}
return null;
}
@Override
protected void onPostExecute(String[] result) {
// Call onRefreshComplete when the list has been refreshed.
((PullToRefreshListView) result_list).onRefreshComplete();
super.onPostExecute(result);
}
}
}
公共静态类FragmentMainClass扩展片段{
int i;
公共FragmentMainClass(){
}
公共FragmentMainClass(int i){
这个。i=i;
}
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
最终视图根视图=充气机。充气(
R.layout.fragment\u搜索的数据,容器,false);
TextView sn=(TextView)rootView.findViewById(R.id.stop\u name);
TextView sc=(TextView)rootView.findViewById(R.id.stop\u代码);
字符串前缀=getArguments().getString(“BussTopName”);
if(sn!=null&&sc!=null){
if(前缀.contains(“/”){
if(前缀.contains(“/”){
序号.setText(前缀.replace(“\”,”).split(“/”[0]+“\n”+前缀.replace(“\”,”).split(“/”[1]);
sc.setText(getArguments().getString(“BussTopCode”);
}否则{
序号.setText(前缀.replace(“\”,”).split(“/”[0]+“\n”+前缀.replace(“\”,”).split(“/”[1]);
sc.setText(getArguments().getString(“BussTopCode”);
}
}否则{
序列号设置填充(20,40,0,0);
序号setText(前缀.replace(“\”,”);
sc.setText(getArguments().getString(“BussTopCode”);
}
}
最终LinearLayout子项=(LinearLayout)根视图
.findViewById(R.id.search\u result\u data\u框);
LayoutParams params=(LayoutParams)子级。getLayoutParams();
//setVisibility(View.GONE);
//参数高度=0;
widthListView=container.getWidth();
setTranslationX(-container.getWidth());
rootView.animate().setStartDelay(300).translationX(0)
.withEndAction(新的可运行(){
@凌驾
公开募捐{
conreq=newconnectionrequest(“97”,getArguments().getString(“BussTopCode”));
//扩大(儿童);
初始化结果列表(rootView);
//setVisibility(View.INVISIBLE);
}
});
返回rootView;
}
公共静态空间展开(最终视图v){
最终int-targetHeight=v.getMeasuredHeight();
v、 getLayoutParams().height=0;
v、 设置可见性(View.VISIBLE);
动画a=新动画(){
@凌驾
受保护的无效应用转换(浮点插值时间,
变换(t){
v、 getLayoutParams().height=InterpolateTime==1?LayoutParams.WRAP_内容
:(int)(目标八*插值时间);
v、 requestLayout();
}
@凌驾
公共布尔值willChangeBounds(){
返回true;
}
};
//1dp/ms
a、 setDuration((int)(targetHeight/v.getContext().getResources()
.getDisplayMetrics().density));
v、 startAnimation(a);
}
ActivityResult上的公共void(int请求代码、int结果代码、意图数据)
{
}
公共无效初始值设定结果列表(视图v){
结果列表=(ListView)v.findViewById(R.id.list\u view\u结果);
//(PullToRefreshListView)v.findViewById(R.id.list_view_results);;
final ResultDataCustomAdapter customAdapter=新ResultDataCustomAdapter(getActivity(),R.layout.pull\u refresh\u list\u项,conreq.getCollectedData().getBusRouteSetData());
//prlv.prepareforefresh();
((PullToRefreshListView)结果列表)。setOnRefreshListener(新的OnRefreshListener(){
@凌驾
公共void onRefresh(){
//请务必刷新此处的列表。
新建GetDataTask().execute();
}
});
结果\u列表。设置适配器(自定义适配器);
结果列表设置可见性(视图可见);
result_list.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
公共虚空onItemClick(AdapterView av、最终视图、,
最终整数i,长整数i2){
view.animate().setDuration(500).translationX(widthListView).alpha(0)。
withEndAction(新的可运行(){
@凌驾
公开募捐{
//setResult(Activity.RESULT_OK,new Intent().putExtra(“BussTopCode”,data.get(i).getStopCode()).putExtra(“BussTopName”,data.get(i).getStopName());
////整数得到1
//数据删除(i);
int临时整数=i;
//customAdapter.notifyDataSetChanged();
//view.setTranslationX(0);
Log.d(“数据”,conreq.getCollectedData().getBusRouteSetData().get(临时整数-1.getRouteHeading());
Bundle=新Bundle();
bundle.putString(“busdestination”,conreq.getCollectedData().getBusRouteSetData().get(临时整数-1.getRouteHeading());
bundle.putString(“busnumber”,conreq.getCollectedData().getBusRouteSetData().get(临时整数-1.getRouteNo());
Fragment Fragment=new FragmentNextTripForStop();
fragment.setArguments(bundle);
FragmentTransaction fragmentManager=getFragmentManager().beginTransaction();
fragmentManager.setCustomAnimations(R.anim.left\u right\u an
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.home_fragment, fragment)
.addToBackStack(fragment.getTag())
.commit();
if (getSupportFragmentManager().getBackStackEntryCount() >= 0) {
getSupportFragmentManager().popBackStack();
}else{
super.onBackPressed();
}