从Fragment创建子Intent

时间:2015-04-28 12:22:27

标签: java android android-fragments android-activity android-studio

我正在使用 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中改变一些东西?

3 个答案:

答案 0 :(得分:1)

你需要覆盖onCreateOptionsMenuonOptionsItemSelected。在onCreateOptionsMenu方法中,执行以下操作:将菜单扩展到操作栏。您可以在res/menu文件夹下定义菜单项的内容。

接下来在onOptionsItemSelected方法中,您可以处理操作栏中添加的后退按钮的点击次数。还要记住一件事。在清单中,请使用一个主题,其中包含操作栏。 示例:在应用程序标记下使用 android:theme="@android:style/Theme.Light"而不是android:theme="@android:style/Theme.Light.NoTitleBar

答案 1 :(得分:1)

您需要做的就是在当前活动中启用它。

FragmentActivitygetActionBar().setHomeAsUpEnabled(boolean)

否则,在FragmentgetActivity().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