7

我正在使用android注释,我正在尝试注释这个类,以便我可以使用@pref 将值保存到我的共享首选项(注释)类中。我已经设法找到了一个带有意图和广播接收器的解决方法,但这并不理想,现在我想从此类中的共享首选项中获取一个值,以显示为它开始在微调器中选择的默认项目在我的代码上留下气味。

有没有办法注释这个类?

public class SelectNewsFeedDialog extends Dialog {

    private Context context;
    private Button confirmButton;
    private Spinner spinnerTeams;

    public SelectNewsFeedDialog(final Context context, ArrayList<Team> listTeams) {
        super(context,R.style.cust_dialog);
        this.context = context;
        setContentView(R.layout.dialog_choose_news_feed);
        spinnerTeams = (Spinner) findViewById(R.id.dialog_news_feed_spinner_teams);
        confirmButton = (Button) findViewById(R.id.dialog_news_feed_button_confirm);

        confirmButton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                Team team = (Team)spinnerTeams.getSelectedItem();
                Intent intent = new Intent(context, IntentCenter_.class);
                intent.putExtra(context.getString(R.string.extra_update_team_news_feed), team.url.toString());
                intent.setAction(context.getString(R.string.action_update_team_news_feed));
                context.sendBroadcast(intent);
                dismiss();
            }
        });
        SpinnerTeamsAdapter adapter = new SpinnerTeamsAdapter(context, listTeams);
        spinnerTeams.setAdapter(adapter);       
    }
}
4

1 回答 1

11

目前,我们没有任何Dialog类注释。您可能想使用@EBean它,但编译器对缺少的构造函数大喊大叫。

解决方案是使用 aDialogFragment而不是 aDialog并用@EFragment. 以下代码应该可以工作:

@EFragment(R.layout.dialog_choose_news_feed)
public class SelectNewsFeedDialog extends DialogFragment {

    @ViewById
    Button confirmButton;

    @ViewById
    Spinner spinnerTeams;

    @Extra
    List<Team> listTeams;

    @Click
    public void confirmButtonClicked() {
        Team team = (Team) spinnerTeams.getSelectedItem();
        Intent intent = new Intent(context, IntentCenter_.class);
        intent.putExtra(context.getString(R.string.extra_update_team_news_feed), team.url.toString());
        intent.setAction(context.getString(R.string.action_update_team_news_feed));
        context.sendBroadcast(intent);
        dismiss();
    }

    @AfterViews
    public void init() {
        SpinnerTeamsAdapter adapter = new SpinnerTeamsAdapter(getActivity(), listTeams);
        spinnerTeams.setAdapter(adapter);
    }
}

但是,@Extra在列表上使用并不是一个好主意。您应该: * 使用带有@Extra * 注释的 id 列表,或者,使用 setter 并在对话框初始化后将此列表传递给您的适配器。

希望这可以帮助

于 2013-08-21T08:36:12.533 回答