我正在尝试将user_id值从一个Intent传递给另一个Intent。我知道这是非常简单的过程,我已经做了好几次了。但是使用下面的代码,我有点困惑。
我需要将main_ctivity类的user_id值传递给MenuFragment类。代码中的实际流程就像这样 -
MainActivity will call MenuActivity and MenuActivity will call MenuFragment
这意味着,我需要将user_id值从MainActivity传递到MenuActivity,然后从MenuActivity传递到MenuFragment。我对吗?
如果是,我可以将main_ctivity类的user_id值传递给MenuActivity类,但我不知道如何将相同的user_id值从MenuActivity类传递给MenuFragment类。因为我调用MenuFragment类的方式略有不同所以我不知道在这种情况下如何做到这一点。
任何人都可以帮我吗?
以下是MainActivity类
public class MainActivity extends MapActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle bundle = getIntent().getExtras();
user_id = bundle.getString("USERID");
setContentView(R.layout.sample);
findViewById(R.id.sample_button).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int width = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 40, getResources()
.getDisplayMetrics());
SlideoutActivity.prepare(MainActivity.this, R.id.inner_content, width);
Bundle bundle = new Bundle();
bundle.putString("USERID", user_id);
Intent thesisProject = new Intent(MainActivity.this, MenuActivity.class);
thesisProject.putExtras(bundle);
startActivity(thesisProject);
overridePendingTransition(0, 0);
}
});
}
}
以下是MenuActivity类
public class MenuActivity extends FragmentActivity {
private SlideoutHelper mSlideoutHelper;
private String user_id;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle bundle = getIntent().getExtras();
user_id = bundle.getString("USERID");
mSlideoutHelper = new SlideoutHelper(this);
mSlideoutHelper.activate();
getSupportFragmentManager().beginTransaction().add(com.korovyansk.android.slideout.R.id.slideout_placeholder, new MenuFragment(), "menu").commit();
mSlideoutHelper.open();
}
....
}
以下是MenuFragment类
public class MenuFragment extends ListFragment {
private String user_id;
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
setListAdapter(new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, new String[] { " Settings", " Attributes"}));
getListView().setCacheColorHint(0);
}
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
//get selected items
String selectedValue = (String) getListAdapter().getItem(position);
if(selectedValue.equals(" Attributes")) {
Bundle bundle = new Bundle();
bundle.putString("USERID", user_id);
Intent thesisProject = new Intent(getActivity(), MatchingInterest.class);
thesisProject.putExtras(bundle);
startActivity(thesisProject);
}
}
}
答案 0 :(得分:1)
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
user_id = getActivity().getIntent().bundle.getString("USERID");
}
在片段中使用getActivity()
之前,只需添加getIntent()
功能。
答案 1 :(得分:0)
new MenuFragment()将在MenuFragment中调用构造函数,因此在MenuFragment中有一个构造函数
MenuFragment(String uid)
{
this.user_id=uid;
}
并将新的MenuFragment()更改为新的MenuFragment(user_id)