我正在努力使用ExoPlayer通过http播放视频.我想在视频加载后保存视频并从缓存中播放.如何从缓存实现缓存和回放?可以给我任何样品.
这是非常简单的代码:
@Parcelize
data class Inner(val a: Int): Parcelable
@Parcelize
data class Test(val a: Int, val inner: Inner?): Parcelable
@RunWith(AndroidJUnit4::class)
class ExampleInstrumentedTest {
@Test
fun testParcel() {
val test = Test(0, null)
val parcel = Parcel.obtain()
parcel.writeParcelable(test, test.describeContents())
}
}
Run Code Online (Sandbox Code Playgroud)
我有可空的财产Test.inner.如果它不为null,代码工作正常,但是当它为null时,我有例外:
java.lang.NullPointerException: Attempt to invoke interface method 'void android.os.Parcelable.writeToParcel(android.os.Parcel, int)' on a null object reference
Run Code Online (Sandbox Code Playgroud)
怎么解决这个?也许我做错了什么.
我在崩溃日志中发现了这个崩溃.我不知道它什么时候发生.有人能给我建议是什么原因吗?也许有人有同样的崩溃.
java.util.ConcurrentModificationException
at java.util.HashMap$HashIterator.nextEntry(HashMap.java:787)
at java.util.HashMap$KeyIterator.next(HashMap.java:814)
at com.android.internal.util.XmlUtils.writeSetXml(XmlUtils.java:350)
at com.android.internal.util.XmlUtils.writeValueXml(XmlUtils.java:688)
at com.android.internal.util.XmlUtils.writeMapXml(XmlUtils.java:295)
at com.android.internal.util.XmlUtils.writeMapXml(XmlUtils.java:264)
at com.android.internal.util.XmlUtils.writeMapXml(XmlUtils.java:230)
at com.android.internal.util.XmlUtils.writeMapXml(XmlUtils.java:187)
at android.app.SharedPreferencesImpl.writeToFile(SharedPreferencesImpl.java:597)
at android.app.SharedPreferencesImpl.access$800(SharedPreferencesImpl.java:51)
at android.app.SharedPreferencesImpl$2.run(SharedPreferencesImpl.java:512)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:818)
Run Code Online (Sandbox Code Playgroud) 我有主持人
class PhonePresenter @Inject constructor(
private val preference: DataPreference,
private val ioScheduler: Scheduler = Schedulers.io())
Run Code Online (Sandbox Code Playgroud)
ioScheduler是默认参数。我只想注射preference: DataPreference. 现在我有例外
[dagger.android.AndroidInjector.inject(T)] io.reactivex.Scheduler cannot be provided without an @Provides-annotated method.
Run Code Online (Sandbox Code Playgroud)
有什么方法可以定义我想在构造函数中注入的参数吗?
我是iOS的初学者.我尝试扩展UILocalNotification.我的课程如下.
@interface FSCustomNatification : UILocalNotification
typedef enum {
FSCustomNatificationPay,
FSCustomNatificationWrite,
FSCustomNatificationSend
} NotificationTypeT;
@property (nonatomic, assign) NotificationTypeT typeNotificationT;
@end
#import "FSCustomNatification.h"
@implementation FSCustomNatification
@end
Run Code Online (Sandbox Code Playgroud)
当我设置typeNotificationT属性时,我得到 - [UIConcreteLocalNotification setTypeNotificationT:]:无法识别的选择器发送到实例0x8144780.为什么?
FSCustomNatification* localNotification = [[FSCustomNatification alloc] init];
localNotification.typeNotificationT = FSCustomNatificationWrite;
Run Code Online (Sandbox Code Playgroud) 我的问题是为什么当我拖动时CardView我看不到任何动画。在许多示例中,动画都存在。也许有人知道为什么当我从右到左滑动时我会看到从左到右的动画。
布局:
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.CardView
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:id="@+id/swipe.card"
android:layout_width="match_parent"
android:layout_height="200dp"
card_view:cardCornerRadius="4dp"
card_view:contentPadding="8dp"
android:layout_margin="16dp"
app:layout_anchorGravity="bottom">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Card"
android:lineSpacingExtra="6dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="SWIPE THIS CARD"
android:layout_gravity="bottom|right"
android:textAllCaps="true"
android:fontFamily="sans-serif-medium"/>
</android.support.v7.widget.CardView>
</android.support.design.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)
活动:
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_swipe)
val swipe = SwipeDismissBehavior<CardView>()
swipe.setSwipeDirection(SwipeDismissBehavior.SWIPE_DIRECTION_ANY)
val cardView = findViewById<View>(R.id.swipe_card) as CardView
val coordinatorParams = cardView.layoutParams as CoordinatorLayout.LayoutParams
coordinatorParams.behavior = swipe
}
}
Run Code Online (Sandbox Code Playgroud)
支持库版本:
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support:design:28.0.0'
Run Code Online (Sandbox Code Playgroud)