android kotlin片段动作栏标题

时间:2018-05-21 11:56:50

标签: android kotlin android-actionbar fragment title

  • 问题1)如何在Fragment中设置操作栏的标题?
  • 问题2)我的代码中有什么问题?

MainActivity.kt

var query = dbContext.Set<T>().Where(predicate);
var cnt = query.Count();
var result = query.Skip(pageSize * (pageNo - 1)).Take(pageSize).ToList();

Fragment.kt

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

//        Action Bar
        val actionBar = supportActionBar
        actionBar!!.setDisplayShowHomeEnabled(true)
        actionBar.setBackgroundDrawable(ColorDrawable(Color.parseColor("#00FFFFFF")))
        actionBar.setIcon(R.drawable.title)
        actionBar.setDisplayShowTitleEnabled(false)

        createQponFragment()
        navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener)
    }

模拟器显示我的片段页面根本没有标题!

enter image description here

2 个答案:

答案 0 :(得分:0)

试试这段代码 在主活动中创建一个方法来更新工具栏,如下面的代码..

fun updateToolbar(){

   when(FragmentController.getFrontFragmentTag(this)){
         FragmentController.EXAM_FRAGMENT->{
            mIndexMenu= INDEX_ADD
            updateToolbarTitle("Exam")
        }

    }
}

并在所有其他方法中为add片段创建单独的类 FragmentControl.kt。

       fun getFrontFragmentTag(activity: FragmentActivity?): String? {
        return activity?.supportFragmentManager?.findFragmentById(if (activity is Main2Activity) MAIN_ROOT else LOGIN_ROOT)?.tag
    }
        fun AppCompatActivity.addExamFragment(): Fragment {
        mFragment = ExamFragment()
        this.supportFragmentManager?.beginTransaction()?.replace(if (this is LoginActivity) LOGIN_ROOT else MAIN_ROOT, mFragment, EXAM_FRAGMENT)?.commit()
        return mFragment as ExamFragment
    }

并在主要活动调用下面的代码添加片段..

                addExamFragment()

并在onCreate方法中的examFragment中调用代码来更新工具栏。

 (activity as Main2Activity).updateToolbar()

答案 1 :(得分:0)

如果您想为片段设置静态标题,您可以执行以下任一操作:

  • 您可以在片段的布局 XML 中使用 android:label="Your Title" 设置标题:

     <fragment
         android:id="@+id/mainFragment"
         android:name="com.anselmdevelopment.si.MainFragment"
         android:label="Your Title"
         tools:layout="@layout/fragment_main" />
    
  • 或者您可以在设计选项卡的导航 XML 文件中执行此操作:

set_label