在自定义对话框类中使用Android注释

Mik*_*ant 7 android android-annotations

我正在使用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);       
    }
}
Run Code Online (Sandbox Code Playgroud)

Day*_*ayS 10

目前,我们没有任何Dialog类的注释.您可能希望@EBean在此使用,但编译器正在对缺少的构造函数大喊大叫.

解决方案是使用a DialogFragment而不是a Dialog和annotate这个类@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);
    }
}
Run Code Online (Sandbox Code Playgroud)

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

希望这可以帮助