0

あるインテントから別のインテントに user_id 値を渡そうとしています。私はこれが非常に簡単なプロセスであることを知っており、私はそれを数回実行しました. しかし、以下のコードでは、少し混乱しています。

MainActivity クラスから MenuFragment クラスに user_id 値を渡す必要があります。そして、コード内の実際の流れは次のようになります-

MainActivity will call MenuActivity and MenuActivity will call MenuFragment

つまり、user_id 値を MainActivity から MenuActivity に渡し、次に MenuActivity から MenuFragment に渡す必要があります。私は正しいですか?

はいの場合、MainActivity クラスから MenuActivity クラスに user_id 値を渡すことはできますが、同じ 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);
        }
    }
}
4

2 に答える 2

1
@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    user_id = getActivity().getIntent().bundle.getString("USERID");
}

フラグメントでgetActivity()使用する前に関数を追加するだけです。getIntent()

于 2013-05-22T02:29:43.853 に答える
0

new MenuFragment() は MenuFragment のコンストラクターを呼び出すため、MenuFragment 内にコンストラクターがあります。

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

new MenuFragment() を new MenuFragment(user_id) に変更します

于 2013-05-22T07:03:01.100 に答える