打开活动A并加载活动A从活动B的特定片段

use*_*164 7 android fragment android-intent

我有活动A,根据菜单选择加载片段.如果我从活动B向活动A发出意图,将加载默认的指定活动A片段.我想要实现的是从Activity A加载另一个片段而不是默认的片段.我希望这至少有点意义.我试图做的是 - >

在Activity BI中有 - >

btnlinkToForum.setOnClickListener(new View.OnClickListener() {

public void onClick(View view) {
    Intent i = new Intent(getApplicationContext(),
            ReaderActivity.class);

    i.putExtra("fragmentNumber", 1);
    startActivity(i);
}

});
Run Code Online (Sandbox Code Playgroud)

我尝试基于putExtra数据加载活动A中的特定片段,就像那​​样 - >我将此代码放入onCreate方法

if (getIntent().getIntExtra("fragmentNumber", 0) == 1) {
    FragmentManager fm = ReaderActivity.this.getSupportFragmentManager();
    FragmentTransaction ft = fm.beginTransaction();
    FragmentForum fragment = new FragmentForum();

        if (fragment != null) {
            // Replace current fragment by this new one
            ft.replace(R.id.activity_main_content_fragment, fragment);
            ft.commit();

            // Set title 
            tvTitle.setText("Forum");
        }
}
Run Code Online (Sandbox Code Playgroud)

然而,这会加载默认片段...任何帮助将非常感激

use*_*164 6

这工作;)我的问题是,我混合了初始化意图的按钮ID,所以基本上我虽然我按下了右键,因为按钮的名称是正确的但我引用了错误的按钮ID,所以这就是为什么我总是得到一个空值!以下是代码对我有用!在活动B中:

btnToForum.setOnClickListener(new View.OnClickListener() {
            public void onClick(View view) {
                Intent i = new Intent(RssListActivity.this,
                        ReaderActivity.class);
                //pass data to an intent to load a specific fragment of reader activity
                String fragmnet = "forum";
                i.putExtra("fragment", fragmnet); 
                startActivity(i);
            }
        });
Run Code Online (Sandbox Code Playgroud)

在活动A中:

        Intent i = getIntent();
        String fragmentName = i.getStringExtra("fragment");
        String forum = "forum";
        Log.e("Test1", "Test1" + fragmentName);
        if (fragmentName != null && fragmentName.equals(forum)) {

Do some magic here ;)
}
Run Code Online (Sandbox Code Playgroud)


Ash*_*jan 3

\n

任何人都可以举个例子来说明如何做到这一点...每当我尝试使用例如 getIntent().getStringExtra("whatever"); 获取值时 我得到一个空值... \xe2\x80\x93

\n
\n\n

当然,您应该从一项活动到另一项活动获得价值,例如:

\n\n

Activity_A.java

\n\n
Intent i = new Intent(this, SignUpActivity.class);\ni.putStringExtra("key", value);\nstartActivity(i);\n
Run Code Online (Sandbox Code Playgroud)\n\n

Activity_B.java

\n\n
onCreate()\n{\n\n    Intent i = getIntent();\n    String var = i.getStringExtra("key");\n    ..\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

PS:如果你想传递一个对象

\n\n
i.putSerializable("object", object);\n
Run Code Online (Sandbox Code Playgroud)\n\n

\n\n
(Class) i.getSerializable("object");\n
Run Code Online (Sandbox Code Playgroud)\n