我在数据类中有10+参数,我想用空构造函数初始化数据类,并使用setter仅为少数参数设置值,并将对象传递给服务器.
data class Activity(
var updated_on: String,
var tags: List<String>,
var description: String,
var user_id: List<Int>,
var status_id: Int,
var title: String,
var created_at: String,
var data: HashMap<*, *>,
var id: Int,
var counts: LinkedTreeMap<*, *>,
)
Run Code Online (Sandbox Code Playgroud)
用法:
这样的事情很容易
val activity = Activity();
activity.title = "New Computer"
sendToServer(activity)
Run Code Online (Sandbox Code Playgroud)
但它需要在创建构造函数时传递所有参数.我怎样才能像上面这样简化?
val activity = Activity(null,null,null,null,null,"New Computer",null,null,null,null);
sendToServer(activity)
Run Code Online (Sandbox Code Playgroud) 每当我播放媒体时,它都会在DDMS中显示警告 Should have subtitle controller already set
我的代码:
private void start() {
mediaPlayer.start();
mediaPlayer.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mp.stop();
mp.release();
}
});
}
Run Code Online (Sandbox Code Playgroud)
DDMS日志
应该已经设置了字幕控制器
信息/警告(2,0)
当我在Google上搜索时,甚至没有一个与之相关的主题.我怎样才能摆脱或禁用它?
private val repositories = mutableListOf<String>()
private val repositories = ArrayList<String>()
Run Code Online (Sandbox Code Playgroud)
两者都是可变的列表,那么什么是两个关键字的点mutableListOf或ArrayList?
或者有什么重大区别?
我正在尝试使用异步更新适配器内的列表,我可以看到有太多的样板.
这是使用Kotlin Coroutines的正确方法吗?
这可以更优化吗?
fun loadListOfMediaInAsync() = async(CommonPool) {
try {
//Long running task
adapter.listOfMediaItems.addAll(resources.getAllTracks())
runOnUiThread {
adapter.notifyDataSetChanged()
progress.dismiss()
}
} catch (e: Exception) {
e.printStackTrace()
runOnUiThread {progress.dismiss()}
} catch (o: OutOfMemoryError) {
o.printStackTrace()
runOnUiThread {progress.dismiss()}
}
}
Run Code Online (Sandbox Code Playgroud) 我已经尝试了几乎所有方法,但是我无法在循环单个轨道之间实现无间隙音频播放,持续时间为10-15秒.
我尝试过的步骤失败了:
不同的音频文件格式.mp3 .wav .ogg使用
setLooping(true):
MediaPlayer mp1 = MediaPlayer.create(MainActivity.this, R.raw.track1);
mp1.setLooping(true);
mp1.start();
Run Code Online (Sandbox Code Playgroud)创建两个媒体播放器并使用setOnCompletionListener相同的循环逐个循环
无法循环无间隙.
使用setNextMediaPlayer(nextmp)它的工作方式,但只有两个循环是可能的.在完成前两个循环后,我们必须准备并重新开始.
mp1.start();
mp1.setNextMediaPlayer(mp2);
Run Code Online (Sandbox Code Playgroud)更新: @Jeff Mixon的结果回答: Mediaplayer循环因Android错误而停止.Jeff Mixon工作正常,但之后只有10或20个循环,由于一些垃圾收集问题,Mediaplayers会立即停止离开日志,如下所示.我真的有点困在这里2年了.提前致谢.
E/MediaPlayer(24311): error (1, -38)
E/MediaPlayer(23256): Error(1,-1007)
E/MediaPlayer(23546): Error (1,-2147483648)
Run Code Online (Sandbox Code Playgroud)不要with和run有唯一不同的语法相同的功能,或者是有之间的主要差异with和run?
哪种方法适当?
adapter.run {
notifyDataSetChanged()
if (activityDetails.isEmpty())
emptyText.visibility = View.VISIBLE
else
emptyText.visibility = View.GONE
}
with(adapter){
notifyDataSetChanged()
if (activityDetails.isEmpty())
emptyText.visibility = View.VISIBLE
else
emptyText.visibility = View.GONE
}
Run Code Online (Sandbox Code Playgroud) 我按照以下链接重命名包.重命名后,当我尝试构建项目时,android studio抛出错误就像.
错误:任务':app:processDebugGoogleServices'的执行失败.找不到包名称'com.example.app'的匹配客户端
我很困惑,看起来和工作非常相似.我应该去哪一个?
private var mMediaController by Delegates.notNull<MediaControllerCompat>()
Run Code Online (Sandbox Code Playgroud)
要么
lateinit private var mMediaController: MediaControllerCompat
Run Code Online (Sandbox Code Playgroud)
用法:
@Subscribe
fun connectToSession(token: MediaSessionCompat.Token) {
mMediaController = MediaControllerCompat(activity, token)
mMediaController.registerCallback(mMediaControllerCallback)
}
Run Code Online (Sandbox Code Playgroud) Dialog dialog;
private void opendialog() {
dialog = new Dialog(MainActivity.this);
dialog.setContentView(R.layout.popup);
dialog.setTitle(R.string.msettings);
RelativeLayout reply_layout = (RelativeLayout) dialog
.findViewById(R.id.reply_layout);
final RelativeLayout ringtone_layout = (RelativeLayout) dialog
.findViewById(R.id.ringtone_layout);
registerForContextMenu(ringtone_layout);
ringtone_layout.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
openContextMenu(ringtone_layout);
}
});
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
menu.setHeaderTitle("Select The Action");
menu.add(0, v.getId(), 0, "Edit");
menu.add(0, v.getId(), 1, "Delete");
}
@Override
public boolean onContextItemSelected(MenuItem item) {
System.out.println("Inside onContextItemSelected");
return super.onContextItemSelected(item);
}
Run Code Online (Sandbox Code Playgroud)
在Dialog中使用上下文菜单时,永远不会调用onContextItemSelected.我的代码有什么问题吗?提前致谢..
我正在尝试将函数作为参数传递,但它抛出'Unit不能作为函数调用.提前致谢.
uploadImageToParse(imageFile, saveCall1())
uploadImageToParse(imageFile, saveCall2())
uploadImageToParse(imageFile, saveCall3())
private fun uploadImageToParse(file: ParseFile?, saveCall: Unit) {
saveCall()//Throws an error saying 'Unit cannot be invoked as function'
}
Run Code Online (Sandbox Code Playgroud)