将参数传递给 XML 布局中定义的片段
Posted
技术标签:
【中文标题】将参数传递给 XML 布局中定义的片段【英文标题】:Passing argument to fragment that is defined in XML layout 【发布时间】:2015-12-21 05:11:29 【问题描述】:public class ActivityA extends AppCompatActivity
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_one);
activity_one.xml
<fragment
android:id="@+id/fragment"
class="com.emoontech.waternow.FragmentA"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_/>
片段A
public class FragmentA extends Fragment
public static FragmentEditEvent newInstance(String param1, String param2)
FragmentEditEvent fragment = new FragmentEditEvent();
Bundle args = new Bundle();
args.putString(ARG_PARAM1, param1);
args.putString(ARG_PARAM2, param2);
fragment.setArguments(args);
return fragment;
//点击按钮时从另一个Activity
Intent intent = new Intent(this, ActivityA.class);
intent.putString("param1","val1");
intent.putString("param2","val2");
startActivity(intent);
//如何将这两个值发送给FragmentA?
【问题讨论】:
检查这个Answer的问题是相似的 How to pass values between Fragments的可能重复 我已经调查过了。你这么说,我不能在 activity_main.xml 中使用回答我在那里https://***.com/a/32748751/3301009 在活动之间共享数据非常通用,也可以用于片段
【讨论】:
【参考方案2】:试试这个
// From ActivityA
// retrieve the content of the intent from the previous activity
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fragment); // set content view to layout
String param1Text= getIntent().getStringExtra("param1");
String param2Text = getIntent().getStringExtra("param2");
// this will pass the parameter to the fragment
Fragment frament = FragmentA.newInstance(param1Text, param2Text);
// use the fragment for what you desire
【讨论】:
【参考方案3】:发现无法直接将参数传递给faragment,但替代方法是使用片段管理器并在活动中执行findFragmentById()以获取片段并根据需要设置日期。
编辑: If I declare a fragment in an XML layout, how do I pass it a Bundle?
【讨论】:
以上是关于将参数传递给 XML 布局中定义的片段的主要内容,如果未能解决你的问题,请参考以下文章
如何使用底部导航视图和 Android 导航组件将参数传递给片段?
将 xml 字符串参数传递给 SQL Server 存储过程