多次添加后引用片段

Referring to a fragment after adding it multiple times

我正在创建一个报警应用程序,报警选项是一个片段activity。应该为每个新警报添加一个 activity 的新实例,我做到了这一点并且我能够正确地做到这一点,甚至通过在每个片段中定义 onClickListeners 来修改它们中的参数。但现在我想引用我在片段的 java class 中创建的变量,但我不知道如何操作,因为我只是添加了它们,但我不知道它们的名称或其他任何内容。

Activity 我在其中创建了片段的新实例:

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

                ;
            }
    );

}

我在片段的 class

中修改的变量之一
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;
                        }
                    };
                }
        );

我相信你指的是成员变量check_sunday。使其静止。

public static boolean check_sunday = true;

顺便说一下,使用正确的 Java 命名约定。更容易理解。
alarm_fragment改为A​​larmFragmentcheck_sunday改为 sCheckSunday(因为现在是静态的),依此类推
你可以参考Google's Java style guide

我意识到,与其一遍又一遍地添加相同的片段,我实际上不得不创建一个新片段并每次都添加它,以便于命名我创建的:

    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() 你可以读取元素的变量并修改它们

我希望这可以帮助遇到与我相同问题的任何人。