如何设置主要活动中显示的默认片段?

时间:2017-04-14 17:29:09

标签: java android android-studio android-fragments bottomnavigationview

所以我今天遇到了一个小问题。我在我的应用程序中制作了一个底部导航视图,点击按钮后,它取代了屏幕上的片段(它完美无缺!)。 但是在启动应用程序之后,没有单击任何按钮,屏幕上就没有片段。 我已经意识到只有在点击按钮后才会显示片段,并且我想要一个默认片段(kalkulatorFragment)。 我一直在努力以某种方式设置它,但没有成功......

from tkinter import *
master = Tk()

file = 'file\path'
file1 = 'file\path'
file2 = 'file\path'
file3 = 'file\path'
file4 = 'file\path'
file5 = 'file\path'
file6 = 'file\path'
file7 = 'file\path'
list = [file, file1, file2, file3, file4, file5, file6, file7]


def _toggle_visibility(event, widg):
    global txt
    try:
        block_start, block_end = _get_block("insert", widg)
    except:
        return
    next_hidden = widg.tag_nextrange("hidden", block_start, block_end)
    if next_hidden:
        widg.tag_remove("hidden", block_start, block_end)
    else:
        widg.tag_add("hidden", block_start, block_end)
def _get_block(index, widg):
    global txt
    '''return indicies after header, to next header or EOF'''
    start = widg.index("%s lineend+1c" % index)
    next_header = widg.tag_nextrange("header", start)
    if next_header:
        end = next_header[0]
    else:
        end = widg.index("end-1c")
    return (start, end)

txt = Text(master)
txt.grid()
txt.tag_configure("header", foreground="#9b3e96")  # , spacing1=10, spacing3=10)
txt.tag_bind("header", "<Double-1>", lambda event: _toggle_visibility(event, txt))
txt.tag_configure("hidden", elide=True)


for item in list:
    with open(item) as f:
        h = f.readlines()
        txt.insert('end', '==============================================\n ', 'header')
        txt.insert('end', h)
master.mainloop()

谢谢:)

2 个答案:

答案 0 :(得分:3)

好的,我刚想通了。 我将ft.replace移动到onCreate()方法,因此kalkulatorFragment将在创建Activity后立即显示。

public class Main extends AppCompatActivity {

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

    kalkulatorFragment kalkulator_fragment = new kalkulatorFragment();
    FragmentManager fm = getFragmentManager();
    FragmentTransaction ft = fm.beginTransaction();

    ft.replace(android.R.id.content, kalkulator_fragment);
    ft.commit();

    BottomNavigationView navigation = (BottomNavigationView) findViewById(R.id.navigation);
    navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);
}

答案 1 :(得分:-1)

您需要使用OnCreate方法的代码 OUTSIDE

navigation.setSelectedItemId(R.id.IdOFYourItemFromBottomNavigationMenuItems);

我不知道为什么,但它在OnCreate方法中不起作用。你可以在OnCreate方法中声明并初始化它,只是不能在那里设置默认项。

在我的情况下,我在OnCreateOptionsMenu中使用它。