Java 在android中将数据从一个意图传递到另一个意图

Java 在android中将数据从一个意图传递到另一个意图,java,android,google-maps-api-2,Java,Android,Google Maps Api 2,我试图将用户id值从一个意图传递到另一个意图。我知道这是一个非常直接的过程,我已经做过好几次了。但是对于下面的代码,我有点困惑 我需要将用户id值从MainActivity类传递到MenuFragment类。代码中的实际流程是这样的- MainActivity将调用MenuActivity,MenuActivity将调用MenuFragment 这意味着,我需要将用户id值从MainActivity传递到MenuActivity,然后从MenuActivity传递到MenuFragment。我说

我试图将用户id值从一个意图传递到另一个意图。我知道这是一个非常直接的过程,我已经做过好几次了。但是对于下面的代码,我有点困惑

我需要将用户id值从MainActivity类传递到MenuFragment类。代码中的实际流程是这样的-

MainActivity将调用MenuActivity,MenuActivity将调用MenuFragment

这意味着,我需要将用户id值从MainActivity传递到MenuActivity,然后从MenuActivity传递到MenuFragment。我说得对吗

如果是,我可以将用户id值从MainActivity类传递到MenuActivity类,但我不确定如何将相同的用户id值从MenuActivity类传递到MenuFragment类。因为我调用MenuFragment类的方式略有不同,所以我不确定在这种情况下如何实现

有人能帮我吗

下面是主要的活动类

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);
        }
    });
    }
    }
    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();
    }

    ....

}
下面是MenuActivity类

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);
        }
    });
    }
    }
    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);
        }
    }
}
公共类MenuFragment扩展了ListFragment{
私有字符串用户标识;
@凌驾
已创建ActivityState上的公共无效(Bundle savedInstanceState){
super.onActivityCreated(savedInstanceState);
setListAdapter(新的ArrayAdapter(getActivity(),android.R.layout.simple_list_item_1,新字符串[]{“设置”,“属性”});
getListView().setCacheColorHint(0);
}
@凌驾
public void onListItemClick(列表视图l、视图v、整数位置、长id){
//获取所选项目
字符串selectedValue=(字符串)getListAdapter().getItem(位置);
if(selectedValue.equals(“属性”)){
Bundle=新Bundle();
bundle.putString(“USERID”,user\u id);
Intent thesisProject=newintent(getActivity(),MatchingInterest.class);
项目putExtras(捆绑);
startActivity(本项目);
}
}
}
在片段中使用
getIntent()
之前,只需附加
getActivity()
函数。

new MenuFragment()将调用MenuFragment中的构造函数,因此在MenuFragment中有一个构造函数

MenuFragment(String uid)
{
    this.user_id=uid;
}

将new MenuFragment()更改为new MenuFragment(用户id)

您看到了吗?这是个很坏的主意。在片段被销毁并重新创建后,您将不具有此值。改用
setArguments