我试图将活动中的额外内容添加到片段中。但有些事情是错的!有谁有想法?我的情况不同,因为我想在片段中做到这一点
myActivity:
<div style="display:flex; flex-direction: row; justify-content: center; align-items: center">
<input type="button" value="Previous" id="btnPrevious"/>
<span id="spanStage">Stage 5</span>
<input type="button" value="Next" id="btnNext"/>
</div>
myfragment
if(email.matches(users.user1)&&password.matches(users.pass1)){
Intent intent = new Intent(LoginActivity.this,MainActivity.class);
Intent i = new Intent(LoginActivity.this,ProfileFragment.class);
i.putExtra("pn", users.pn1);
i.putExtra("name", users.name1);
i.putExtra("family", users.family1);
i.putExtra("rank", users.rank1);
startActivity(intent);
finish();
}
你好。我试图从活动中获取额外的内容。但有些事情是错的!有谁有想法?
答案 0 :(得分:3)
您启动意向呼叫意图。但意图有数据是我,它还没有开始。
您可以使用setArgument和getArgument从活动发送和接收数据到片段或从片段到片段:
在YourReceiveFragment中:
public static Fragment newInstance(String data1, String data2, ...) {
Fragment f = new YourReceiveFragment();
Bundle bundle = new Bundle();
bundle.putString(DATA_RECEIVE1, data1);
bundle.putString(DATA_RECEIVE2, data2);
f.setArguments(bundle);
return f;
}
在您的活动中:只需拨打电话:
Fragment f = YourReceiveFragment.newInstance(yourString1, yourString2);
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.add(R.id.main_container, f).commit();
然后在YourReceiveFragment中:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null){
String dataReceive1 = getArguments().getString(DATA_RECEIVE1);
String dataReceive2 = getArguments().getString(DATA_RECEIVE2);
}
}
如果您想将活动中的数据发送到另一个活动中的片段,请使用接口或更简单的方法是将数据传递给包含片段的活动,然后将数据发送到片段。
答案 1 :(得分:1)
您可以使用捆绑包发送数据,建议
从活动传递数据
fragment = new YourFragment();
if (fragment != null) {
FragmentManager fragmentManager = getFragmentManager();
Bundle bundle = new Bundle();
bundle.putString("key", "value");
fragment.setArguments(bundle);
fragmentManager.beginTransaction().replace(R.id.container, fragment).commit();
}
从Fragment
接收数据 String var = getArguments().getString("value");
答案 2 :(得分:1)
您无法使用startActivity创建片段。您需要使用这样的包创建片段:
count = 0
for (i in 1:1000) {
count = ifelse(i %in% 1:100, count + 1, count)
}
count
#> [1] 100
然后在你的ProfileFragment fragment = new ProfileFragment();
Bundle args = new Bundle();
args.putString("name", users.name1);
args.putString("family", users.family1);
fragment.setArguments(args);
// then tell the FragmentManager to attach the fragment
// to the activity
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.your_placeholder, fragment);
ft.commit();
中获取:
onCreateView
请记住,您需要将返回代码移至String name = getArguments().getString("name", "");
String family = getArguments().getString("family", "");
方法的最后一个,并将代码更改为以下内容:
onCreateView