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)
然而,这会加载默认片段...任何帮助将非常感激
这工作;)我的问题是,我混合了初始化意图的按钮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)
\n\n\n任何人都可以举个例子来说明如何做到这一点...每当我尝试使用例如 getIntent().getStringExtra("whatever"); 获取值时 我得到一个空值... \xe2\x80\x93
\n
当然,您应该从一项活动到另一项活动获得价值,例如:
\n\nActivity_A.java
\n\nIntent i = new Intent(this, SignUpActivity.class);\ni.putStringExtra("key", value);\nstartActivity(i);\nRun Code Online (Sandbox Code Playgroud)\n\nActivity_B.java
\n\nonCreate()\n{\n\n Intent i = getIntent();\n String var = i.getStringExtra("key");\n ..\n}\nRun Code Online (Sandbox Code Playgroud)\n\nPS:如果你想传递一个对象
\n\ni.putSerializable("object", object);\nRun Code Online (Sandbox Code Playgroud)\n\n和
\n\n(Class) i.getSerializable("object");\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
7447 次 |
| 最近记录: |