0

Androidのフラグメントに余分なものを入れようとしています。リスト フラグメントがあり、リストでアイテムがクリックされたときに、その ID を次のアクティビティにエクストラとして渡したいと考えています。コードは次のとおりです。

public class EmailListFragment extends ListFragment {

    @Override
    public void onListItemClick(ListView l, View v, int position, long id) {

        Email mail = ((CustomEmailFragmentAdapter)getListAdapter()).getItem(position);

        Intent i = new Intent(getActivity(),EmailFragmentActivity.class);
        i.putExtra(EmailFragment.EXTRA_EMAIL_ID, mail.getId());
        startActivity(i);
    }

}

および抽象SingleFragmentActivity クラス:

public abstract class SingleFragmentActivity extends FragmentActivity{

    protected abstract Fragment createFragment();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.email_fragment_container);
        FragmentManager fm = getSupportFragmentManager();
        Fragment fragment = fm.findFragmentById(R.id.email_fragment_container);
        if(fragment == null){
            fragment = createFragment();
            fm.beginTransaction().add(R.id.email_fragment_container, fragment).commit();
        }
    }
}

および EmailFragmentActivity クラス:

public class EmailFragmentActivity extends SingleFragmentActivity {

    @Override
    protected Fragment createFragment() {
        UUID emailId = (UUID) getIntent().getSerializableExtra(
            EmailFragment.EXTRA_EMAIL_ID);

        return EmailFragment.newInstance(emailId);
    }

}

mail.getId() をエクストラとして渡し、EmailFragmentActivity クラスでエクストラを取得します。問題は、渡した ID が EmailFragmentActivity クラスで取得した ID と異なることです。ここで何が間違っていますか?誰でも助けることができますか?

ありがとう

4

1 に答える 1

0

おそらく、CustomEmailFragmentAdapter で getItem() をオーバーライドしていますか?

于 2013-11-06T22:08:33.800 に答える