我正在使用 FragmentActivity 在 Fragment 之间切换。但是我想在一个片段上有一个Admin按钮,当我点击它时,一个新的片段或活动就像一个孩子 (使用操作栏中的后退按钮)。
我该怎么做?
以下是我的代码,但是后退按钮不会出现在操作栏中:
片段:
public class Reports extends Fragment {
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (container == null) {
return null;
}
public void onClick(View v) {
Intent intent = new Intent(getActivity(), LoginActivity.class);
getActivity().startActivity(intent);
}
});
}
}
活动(目前......但如果我们需要,可能是碎片?):
public class LoginActivity extends ActionBarActivity {
public static final String TAG = LoginActivity.class.getSimpleName();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.login);
Button loginButton = (Button) findViewById(R.id.loginButton);
loginButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
TextView emailText = (TextView) findViewById(R.id.emailText);
TextView passwordText = (TextView) findViewById(R.id.passwordText);
ParseUser.logInInBackground(emailText.getText().toString(), passwordText.getText().toString(), new LogInCallback() {
public void done(ParseUser user, ParseException e) {
if (user != null) {
Log.i(TAG, "Yeahhh Login OK");
finish();
} else {
runOnUiThread();
}
}
});
}
});
}
也许我必须在Manifest中改变一些东西?
答案 0 :(得分:1)
你需要覆盖onCreateOptionsMenu
和onOptionsItemSelected
。在onCreateOptionsMenu
方法中,执行以下操作:将菜单扩展到操作栏。您可以在res/menu
文件夹下定义菜单项的内容。
接下来在onOptionsItemSelected
方法中,您可以处理操作栏中添加的后退按钮的点击次数。还要记住一件事。在清单中,请使用一个主题,其中包含操作栏。
示例:在应用程序标记下使用
android:theme="@android:style/Theme.Light"
而不是android:theme="@android:style/Theme.Light.NoTitleBar
答案 1 :(得分:1)
您需要做的就是在当前活动中启用它。
在FragmentActivity
内getActionBar().setHomeAsUpEnabled(boolean)
。
否则,在Fragment
:getActivity().getActionBar().setHomeAsUpEnabled(boolean)
内。
答案 2 :(得分:1)
如果你正在开始new Activity
,你可以在shouldDisplayHomeUp();
方法中写下onCreate()
来启用后退按钮。回到堆栈中的上一个活动。
在添加new Fragment
的另一种情况下,您可以查看此answer作为参考,因为它提到当您添加new Fragment
时,请将其添加到back stack
像这样
getSupportFragmentManager().beginTransaction()
.add(detailFragment, "detail")
// Add this transaction to the back stack
.addToBackStack()
.commit();
这会使后退按钮将您带到之前的Fragment