use*_*690 5 android android-arrayadapter android-layout android-fragments android-fragmentactivity
我有一个活动(MainActivity),它扩展了AppCompatActivity,因为我在我的应用程序中使用了一些材料设计元素.
然后我有一个带有几个字段和一个按钮的数组适配器.此适配器具有单独的视图,并注入到我的MainActivity布局中.
当我单击适配器视图上的按钮时,我想打开一个显示一堆文本的新片段,但是,我似乎无法做到这一点,我认为这是因为我没有在MainActivity中扩展FragmentActivity?我在另一篇文章中读到我应该能够扩展AppCompatActivity并且仍然能够引用片段管理器...这是我打开片段的代码:
在我的自定义数组适配器中,按钮的onClick():
holder.desc.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
JobDescFragment fragment= new JobDescFragment();
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.fragment_container, fragment);
transaction.addToBackStack(null);
transaction.commit();
}
});
Run Code Online (Sandbox Code Playgroud)
我得到的错误是它无法解析getSupportFragmentManager().我究竟做错了什么?
我在我的适配器中导入android.support.v4.app.Fragment和.FragmentManager.
在此先感谢您的帮助!
<merge
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<com.lorentzos.flingswipe.SwipeFlingAdapterView
android:id="@+id/frame"
android:background="@color/laborswipe_lightgray"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:context=".MainActivity"
android:layout_gravity="top" />
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</merge>
Run Code Online (Sandbox Code Playgroud)
Jen*_*dra 19
你可以试试这个
FragmentTransaction ft = ((AppCompatActivity) mContext).getSupportFragmentManager()
.beginTransaction();
Run Code Online (Sandbox Code Playgroud)
例如在kotlin中将是这样。我已经尝试过了,并且效果很好
val dialog = IntervAddFragment()//The fragment that u want to open for example
val ft = (context as AppCompatActivity).supportFragmentManager.beginTransaction()
dialog.show(ft, ContentValues.TAG)
Run Code Online (Sandbox Code Playgroud)
在适配器中传递上下文并使用
context.getSupportFragmentManager().beginTransaction();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10952 次 |
| 最近记录: |