Я хотел сопоставить конкретный блок if в java
...
...
if(isTrue){
doAction();
}
...
...
}
. Если я использую regExp
if \(isTrue(.|\n)*}
, он включал замыкающую скобку для блока метода, поэтому я использовал
if \(!isTrue([^}.]|\n)*}
, чтобы исключить заключительную скобку из соответствия шаблону.
Использовать
blockquote>
- putIntegerArrayList (String key, ArrayList value)
- Вставляет значение ArrayList в отображение этого Bundle, заменяя любое существующее значение для данного key
putIntegerArrayList(Constant.BRANDS_LIST, array)
И получится как
blockquote>
- getIntegerArrayList (String key)
- Возвращает значение связанный с данным ключом, или null, если сопоставление нужного типа для данного ключа или нулевого значения явно не связано с ключом.
extras.getIntegerArrayList(Constant.BRANDS_LIST)
Вы можете создать общий класс Parcelable, который содержит переменную типа (Any)
class BaseParcelable : Parcelable {
var value: Any
constructor(value: Any) {
this.value = value
}
constructor(parcel: Parcel) {
this.value = Any()
}
override fun writeToParcel(dest: Parcel?, flags: Int) {}
override fun describeContents(): Int = 0
companion object CREATOR : Parcelable.Creator<BaseParcelable> {
override fun createFromParcel(parcel: Parcel): BaseParcelable {
return BaseParcelable(parcel)
}
override fun newArray(size: Int): Array<BaseParcelable?> {
return arrayOfNulls(size)
}
}
}
Затем используйте этот класс для передачи данных между фрагментами или между ними (Activty to fragment)
Чтобы передать список из фрагмента в фрагмент, например:
companion object {
fun newInstance(categoryId: Int, brandsList: ArrayList<Int>): Fragment {
val fragment = CategoryAllAdsFragment()
fragment.arguments = Bundle()
fragment.arguments!!.putInt(Constant.CATEGORY_ID, categoryId)
fragment.arguments!!.putParcelable(Constant.BRANDS_LIST, BaseParcelable(brandsList))
return fragment
}
}
Чтобы получить список:
val any = arguments?.getParcelable<BaseParcelable>(Constant.BRANDS_LIST).value
val list = any as ArrayList<Int>
extras.getIntArray(Constant.BRANDS_LIST)
, возможно, будет работать, но вBundle
нетputExtra(Constant.BRANDS_LIST, array)
– Mohamd Al-Najjar 13 July 2018 в 19:36