多次添加后引用片段
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改为AlarmFragment,check_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()
你可以读取元素的变量并修改它们
我希望这可以帮助遇到与我相同问题的任何人。
我正在创建一个报警应用程序,报警选项是一个片段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改为AlarmFragment,check_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()
你可以读取元素的变量并修改它们
我希望这可以帮助遇到与我相同问题的任何人。