2013-08-17 31 views
7

我正在使用android註釋,我正在嘗試註釋此類,以便我可以使用@pref將值保存到我的共享首選項(帶註釋的)類中。我已經成功地找到了工作,意圖和廣播接收器周圍然而,這並不理想,現在,我想在這個類來從共享偏好值,顯示其作爲它的開始微調選擇的默認項留下我的代碼的氣味。在自定義對話框類中使用Android註釋

有什麼辦法來註釋這個類?

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

回答

10

目前,我們還沒有任何關於Dialog類的註解。你可能想在這個用途@EBean但是編譯器在大聲呼喊失蹤構造。

解決方法是使用DialogFragment而不是Dialog,並用@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和被初始化的對話框後,通過此列表適配器。

希望這可以幫助

+0

謝謝我會盡力實施今晚。 額外只是名單的一個項目,因爲我需要使用註釋sharedPreferences只是必要的。所以我發送了一個意圖,然後在帶註釋的類中找到它,但不是以任何方式執行它的好方法,但它起作用 –

+0

如果支持庫版本早於22.2.1,則DialogFragment存在問題,因此更新庫並該問題應該消失。 重要的是要記住,當你使用DialogFragment時,活動/片段生命週期在對話被解除時不會受到影響,因爲它確實是一個片段,活動當前處於前臺,所以onResume不會被調用,應該在對話框的onDismiss方法中創建一個觸發事件的接口。謝謝您的幫助! – j1c1m1b1