LocalSoftwareKeyboardController, FocusRequester の2クラスを使う
LocalSoftwareKeyboardControllerを取得して、show/hideメソッドをコールする
@Composable
fun sample() {
val keyboardController = LocalSoftwareKeyboardController.current
UIレイヤー(Activity, Fragment等)からの、Flowのcollect方法は、大きく次の3つがあります。
import androidx.recyclerview.widget.DiffUtil | |
import com.xwray.groupie.GroupieViewHolder | |
import com.xwray.groupie.Item | |
abstract class DiffCallbackItem<T, VH : GroupieViewHolder>( | |
private val data: T, | |
private val callback: DiffUtil.ItemCallback<T> | |
) : Item<VH>() { | |
override fun isSameAs(other: Item<*>): Boolean { | |
if (viewType != other.viewType) { |
@Composable | |
fun <T> observe( | |
data: Flow<T>, | |
transform: (T) -> T = { it } | |
): T? { | |
var result: T? by state { null } | |
val action: suspend (T) -> Unit = remember { { result = transform(it) } } | |
onCommit(data) { | |
val job = GlobalScope.launch(Dispatchers.Main) { |
import android.content.Context | |
import android.util.AttributeSet | |
import androidx.constraintlayout.widget.ConstraintHelper | |
import androidx.constraintlayout.widget.ConstraintLayout | |
import androidx.core.view.isGone | |
import androidx.core.view.marginLeft | |
import androidx.core.view.marginRight | |
import androidx.core.view.updateLayoutParams | |
class GoneOverflow @JvmOverloads constructor( |
class MainFragment : Fragment(R.layout.main_frag2) { | |
private val binding: MainFrag2Binding by viewBinding() | |
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { | |
super.onViewCreated(view, savedInstanceState) | |
// ... | |
} | |
} |
class MainFragment : Fragment(R.layout.main_frag) { | |
// private lateinit var binding: MainFragBinding <-- memory leak? | |
private val binding: MainFragBinding get() = MainFragBinding.bind(view!!) | |
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { | |
super.onViewCreated(view, savedInstanceState) | |
// ... | |
} | |
} |
class ChildFragment : Fragment() { | |
private lateinit var binding: ChildFragBinding | |
override fun onCreateView( | |
inflater: LayoutInflater, | |
container: ViewGroup?, | |
savedInstanceState: Bundle? | |
): View? { | |
binding = ChildFragBinding.inflate(inflater, container, false) | |
return binding.root |
public final class AppModule_ProvideFugaFactory implements Factory<Fuga> { | |
@Override | |
public Fuga get() { | |
return provideFuga(); | |
} | |
public static AppModule_ProvideFugaFactory create() { | |
return InstanceHolder.INSTANCE; | |
} |