在活动中创建一个片段

时间:2014-06-24 13:38:57

标签: java android layout android-activity fragment

在我的主要活动布局(第一个布局)中,我动态设置了文本视图。现在,当单击这些文本视图时,我想再次显示具有文本视图的另一个布局(第二个布局)(动态设置)。单击这些文本视图时,我希望将此第二个布局的此文本视图的文本设置为单击的第一个布局的文本视图的文本。

例如。

第一个布局 - > [click] [click] - >是布局中的两个文本视图。假设我点击第一个,然后我想显示

[英语] [数学] [科学]。假设我点击英语然后我想设置屏幕再次显示第一个布局但替换视图的文本点击

第一个布局 - > [英文] [点击]。

现在问题 我已将第一个布局设置为main_layout。现在我需要知道如何在fragment_layout中显示第二个布局,然后返回main_activity。我想保存main_layout的实例,因为它从main传递到fragment并返回main。

点击第一个布局的文字视图时调用的功能

         View.OnClickListener timetable_click_listen = new View.OnClickListener() {

    @Override
    public void onClick(View timetable_viewtext) {

        setContentView(R.layout.fragment_time_table);


        int no_subjects;

        /*opens the database and finds out the number of subjects user has entered
        Opening database and getting the number of subjects*/
        SQLiteDatabase db = openOrCreateDatabase("DATABASE",MODE_PRIVATE,null);     

        if(db==null)
        {
            Log.d("Error in TimeTable","There was a error in Opening Database");
        }

        else{
            Log.d("Inside TimeTable Onclick","Opening Database");
        }

        Cursor c= db.rawQuery("SELECT Num_subjects FROM DETAILS;",null);

        c.moveToFirst();

        no_subjects = c.getInt(c.getColumnIndex("Num_subjects"));

        c.close();

        /*Getting the names of the subjects so as to put that name
         * as the button's text
         */

        String[] name = new String[no_subjects];

        c = db.rawQuery("SELECT * FROM SUBJECTS;",null);

        c.moveToFirst();

        for(int i=0;i<no_subjects;i++)
        {   
            name[i] = c.getString(c.getColumnIndex("Name"));
            c.moveToNext();
        }

        c.close();
        db.close();

        LinearLayout linearlayout = (LinearLayout) findViewById(R.id.timetable_fragment);
        TextView ed;
        List<TextView> allEds = new ArrayList<TextView>();


        for (int i = 0; i < no_subjects; i++) {   

            ed = new TextView(TimeTable.this);

            allEds.add(ed);

            ed.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,
                                                            LinearLayout.LayoutParams.WRAP_CONTENT));

            ed.setId(1000+i);

            ed.setText(name[i]);

            tempId = timetable_viewtext.getId();

            ed.setClickable(true);
            ed.setOnClickListener(subname_click_listen);

            ((LinearLayout)linearlayout).addView(ed);

        }

    }
};

现在我不明白在第二个布局的功能中该怎么做了.onclick()

提前致谢

1 个答案:

答案 0 :(得分:1)

您应该使用FragmentManagerFragmentTransaction。为此,您需要扩展Fragment类。例如,您可能希望制作片段以显示每个布局。这些片段将拥有自己的布局文件,因此您可以自定义它们的外观。您需要提供一个容器来容纳碎片。我使用了名为FrameLayout的{​​{1}}。要初始化片段,请使用fragment_container方法并使用FragmentTransaction.add()方法在它们之间切换。

FragmentTransaction.replace()

查看API以获取更多信息:FragmentTransaction