首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >多次添加片段后引用它

多次添加片段后引用它
EN

Stack Overflow用户
提问于 2015-09-14 03:10:42
回答 2查看 40关注 0票数 0

我正在创建一个警报应用程序,警报选项是一个片段活动。应该为每一个新的警报添加一个新的活动实例,我已经到了这一点,并且我能够正确地完成它,甚至通过在每个片段中定义onClickListeners来修改它们中的参数。但是现在我想引用我在片段的java类中创建的变量,我不知道怎么做,因为我只是添加了它们,我不知道它们的名称或其他什么。

在其中创建片段的新实例的活动:

代码语言:javascript
运行
复制
@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();
                }

                ;
            }
    );

}

我在片段类中修改的变量之一

代码语言:javascript
运行
复制
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;
                        }
                    };
                }
        );
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-15 23:26:41

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

代码语言:javascript
运行
复制
    final AlarmFragment[] alarmFragment = new AlarmFragment[7];

然后在OnClickListener(内部

代码语言:javascript
运行
复制
 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(),您可以读取元素的变量并修改它们

我希望这能对面临同样问题的人有所帮助。

票数 0
EN

Stack Overflow用户

发布于 2015-09-14 03:57:49

我相信您指的是成员变量check_sunday。把它固定下来。

代码语言:javascript
运行
复制
public static boolean check_sunday = true;

顺便说一句,使用适当的Java命名约定。更容易理解。

将alarm_fragment改为AlarmFragment,将check_sunday更改为sCheckSunday (因为它现在是静态的),依此类推。

为此,您可以参考谷歌Java风格指南

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32556775

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档