2015-09-14 15 views
0

我正在創建一個警報應用程序,警報選項是一個片段活動。應該爲每個新警報添加一個活動的新實例,我已經達到了這一點,並且我能夠正確地做到這一點,甚至通過在其中定義onClickListeners來修改每個片段中的參數。但現在我想引用我在片段的java類中創建的變量,我不知道是如何因爲我剛剛添加它們而我不知道它們的名稱或任何內容。多次添加它後引用一個片段

活動中,我創建片段的新實例:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_alarms); 

    final android.support.v4.app.FragmentManager fragmentManager = getSupportFragmentManager(); 

    Button button_newAlarm = (Button)findViewById(R.id.button_new_alarm); 
    button_newAlarm.setOnClickListener(
      new Button.OnClickListener() { 
       public void onClick(View v) { //CREATES A NEW ALARM 
        android.support.v4.app.FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
        alarm_fragment alarmFragment = new alarm_fragment(); 
        fragmentTransaction.add(R.id.alarmListContainer,alarmFragment); 
        fragmentTransaction.commit(); 
       } 

       ; 
      } 
    ); 

} 

一個我在該片段中的類修改變量

public class alarm_fragment extends Fragment { 
    public boolean check_sunday = true;  

    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.activity_alarm_fragment, container, false); 

     final TextView button_check_sunday = (TextView) view.findViewById(R.id.check_sunday); 
     button_check_sunday.setOnClickListener(
       new View.OnClickListener() { 
        public void onClick(View v) { 
         if (check_sunday) { 
          button_check_sunday.setTextColor(Color.BLACK); 
          check_sunday = false; 
         } else { 
          button_check_sunday.setTextColor(Color.WHITE); 
          check_sunday = true; 
         } 
        }; 
       } 
     ); 

回答

0

我意識到,而不是遍地我添加相同的片段,實際上必須創建一個新的,添加它每一次,以使其易於名字,我創建:

final AlarmFragment[] alarmFragment = new AlarmFragment[7]; 

,然後裏面的OnClickListener(

if (alarmsAmount < 7) { // SETS THE MAX AMMOUNT OF ALARMS 
         alarmFragment[alarmsAmount] = new AlarmFragment(); 
         android.support.v4.app.FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
         fragmentTransaction.add(R.id.alarmListContainer, alarmFragment[alarmsAmount]); 
         fragmentTransaction.commit(); 
         alarmsAmount++; 

通過使用再例如alarmFragment[x].isCheckSunday()您可以閱讀elemnt的變量,並對其進行修改

我希望這可以幫助任何人都面臨着同樣的問題。

1

我相信你指的是成員變量check_sunday。使其靜態。

public static boolean check_sunday = true; 

順便說一句,使用適當的Java命名約定。這很容易理解。
變化alarm_fragmentAlarmFragmentcheck_sundaysCheckSunday(因爲它現在是靜態的),等等。
你可以參考Google's Java style guide

+0

我認爲其目的是爲每個片段設置一個警報,而不是訪問相同的靜態警報。設置在每個片段? – headuck

+0

我發現通過使用一個整數來設置警報「數字」,我可以通過TAG識別片段('fragmentTransaction.add(R.id.alarmListContainer,alarmFragment,String.valueOf(alarmsAmount));') 現在我還不知道如何引用這些變量。 –

相關問題