我有活动A,根据菜单选择加载片段。如果我从活动B向活动A发出意图,将加载默认的指定活动A片段。我想要实现的是从Activity A加载另一个片段而不是默认的片段。我希望这至少有点意义。我试图做的是这个 - >
在活动B中我有 - >
btnlinkToForum.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
Intent i = new Intent(getApplicationContext(),
ReaderActivity.class);
i.putExtra("fragmentNumber", 1);
startActivity(i);
}
});
我尝试基于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");
}
}
然而,这会加载默认片段......任何帮助都将受到高度赞赏
答案 0 :(得分: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);
}
});
在活动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 ;)
}
答案 1 :(得分:3)
任何人都可以举例说明如何做到这一点...每当我尝试时 例如,使用获取值 。getIntent()getStringExtra( “什么”);我得到一个空值... -
你肯定会从一个活动到另一个活动获得价值,例如:
Activity_A.java
Intent i = new Intent(this, SignUpActivity.class);
i.putStringExtra("key", value);
startActivity(i);
Activity_B.java
onCreate()
{
Intent i = getIntent();
String var = i.getStringExtra("key");
..
}
P.S:如果你想传递一个对象
i.putSerializable("object", object);
和
(Class) i.getSerializable("object");