您好我的Android应用程序正在使用片段。我想知道是否有一种方法可以在我的应用程序中使用片段的onBackPressed()
方法。我有上一个和下一个按钮,但截至目前我只是创建新的片段并替换,并且没有任何数据被保存。有没有办法保存我的数据/一旦我前进就回去?
答案 0 :(得分:1)
Fragment
的概念与Activity
不同。
一个Activity
可能有多个Fragments
,请阅读:
Fragment
表示行为或用户界面的一部分Activity
。您可以将单个活动中的多个片段组合到一起 构建多窗格UI并在多个活动中重用片段。您 可以将片段视为活动的模块化部分,具有 它自己的生命周期,接收自己的输入事件,你可以 在活动运行时添加或删除(有点像" sub 活动"您可以在不同的活动中重复使用。)
在此处查看更多内容:http://developer.android.com/guide/components/fragments.html
<强> SOLUCTION 强>
因此,如果您想在Fragment中处理onBackPressed行为,您可以这样做:
package com.example.stackoverflowsandbox;
import android.app.Activity;
import android.app.Fragment;
public class MainActivity extends Activity {
public class MyFragment extends Fragment {
public void onBackPressed() {
// your code here...
}
}
private MyFragment myFragment;
@Override
public void onBackPressed() {
// super.onBackPressed(); // comment to not back
this.myFragment.onBackPressed(); // the onBackPressed method of Fragment is a custom method
}
}
答案 1 :(得分:1)
抱歉,不知道我是否理解你的问题,但如果想法并控制其片段中的直接后退按钮,并从中执行一些数据持久性任务,则可以将你的片段添加到控件堆栈FragmentManager中,如下。
FragmentManager fm = getSupportFragmentManager();
MyFragment mMyFragment = new MyFragment();
fm.beginTransaction()
.add(mMyFragment, "mMyFragment")
.addToBackStack( null )
.commit();
在片段中,您需要实现接口OnBackStackChangedListener
在片段中:
public class MyFragment extends Fragment implements OnBackStackChangedListener {
@Override
public void onBackStackChanged() {
//your code here
}
}
如果你只保留值
public class MyFragment extends Fragment {
String valeu;
@Override
public void onCreate( final Bundle savedInstanceState ) {
super.onCreate( savedInstanceState );
if ( savedInstanceState != null ) {
this.valeu = savedInstanceState.getString( "key" );
}
}
@Override
public void onSaveInstanceState( final Bundle outState ) {
super.onSaveInstanceState( outState );
outState.putString( "key", "Your content" );
}
}
答案 2 :(得分:0)
移动到前片段时,使用onSaveInstanceState()保存上一片段的状态 移动时恢复前一个片段中onCreate()或onCreateView()的状态