我想在Kotlin中创建一个具有特定数量元素的对象数组,问题是我现在没有声明中每个对象初始化的当前值,我试过:
var miArreglo = Array<Medico>(20, {null})
Run Code Online (Sandbox Code Playgroud)
在Java中,我有这个,正是我想要的,但我需要它在Kotlin中.:
Medico[] medicos = new Medico[20];
for(int i = 0 ; i < medicos.length; i++){
medicos[i] = new Medico();
}
Run Code Online (Sandbox Code Playgroud)
与上述Java代码相同的Kotlink是什么?
另外,我试过:
var misDoctores = arrayOfNulls<medic>(20)
for(i in misDoctores ){
i = medic()
}
Run Code Online (Sandbox Code Playgroud)
但我在Android Studio上给我看了一条消息:"Val无法重新分配"
我制作了一个应用程序,它在一个文件夹(由同一应用程序创建)内创建一个*.csv文件,同时在 Android 的下载文件夹内。
该文件可以通过 ShareIntent 共享,问题是当应用程序在 Android Oreo 中运行并且用户尝试创建*.csv文件时,应用程序崩溃,引发的异常是:
android.os.FileUriExposedException:
at android.os.StrictMode.onFileUriExposed (StrictMode.java:1958)
at android.net.Uri.checkFileUriExposed (Uri.java:2348)
at android.content.ClipData.prepareToLeaveProcess (ClipData.java:941)
at android.content.Intent.prepareToLeaveProcess (Intent.java:9735)
at android.content.Intent.prepareToLeaveProcess (Intent.java:9741)
at android.content.Intent.prepareToLeaveProcess (Intent.java:9720)
at android.app.Instrumentation.execStartActivity (Instrumentation.java:1795)
at android.app.Activity.startActivityForResult (Activity.java:4495)
at android.support.v4.app.BaseFragmentActivityJB.startActivityForResult (BaseFragmentActivityJB.java:50)
at android.support.v4.app.FragmentActivity.startActivityForResult (FragmentActivity.java:79)
at android.app.Activity.startActivityForResult (Activity.java:4453)
at android.support.v4.app.FragmentActivity.startActivityForResult (FragmentActivity.java:859)
at android.app.Activity.startActivity (Activity.java:4814)
at android.app.Activity.startActivity (Activity.java:4782)
at com.bpl.spart.bloodpressurelogbook.MainActivity$createReportTask.onPostExecute (MainActivity.java:517)
at com.bpl.spart.bloodpressurelogbook.MainActivity$createReportTask.onPostExecute (MainActivity.java:420)
Run Code Online (Sandbox Code Playgroud)
我知道我应该使用 FileProvider 在 API 级别 > 24 中创建 Uri,但是如何使用 FileProvider 提供对下载文件夹内文件的访问权限?
这是我当前的代码:
Intent ShareIntent = new Intent(android.content.Intent.ACTION_SEND);
ShareIntent.setType("text/csv"); …Run Code Online (Sandbox Code Playgroud) 我正在使用 Unity 5 为 Hololens 开发 Holographic 应用程序,我需要创建一些 UI,那么哪种近似值会提供更好的性能?
具有多个面板或多个画布的单个画布?
我需要具有不同位置的多个 UI 元素(文本标签、按钮等),特别是具有不同 Z 轴值。
我正在尝试在redWifi.getImagen()使用.load(Uri.parse("file://android_asset/" + redWifi.getImagen()))库中显示图像,图像位于res> drawable文件夹中,其名称从db中重新获取.如何使用Uri获取资源?,redWifi.getImagen()返回类似"imagename.png"的字符串.
我正在使用下一个代码,但没有显示图像.
Glide.with(detallesRedGuardadaActivity.this)
.load(Uri.parse("file:///android_asset/" + redWifi.getImagen()))
.asBitmap()
.into(iconoRed);
Run Code Online (Sandbox Code Playgroud)
我试过.load(Uri.parse("file://android_asset/" + redWifi.getImagen()))但仍然没有工作.
我在一个 Unity 项目中工作,用户选择.bmp用于制作Texture2D并粘贴到模型的图像文件(格式),我创建了下一个代码,我可以正常使用.png和.jpg文件,但是当我尝试加载时,.bmp我得到了只有(我假设)带有红色“?”的默认纹理 符号,所以我认为是图像格式,如何.bmp在运行时使用文件创建纹理?
这是我的代码:
public static Texture2D LoadTexture(string filePath)
{
Texture2D tex = null;
byte[] fileData;
if (File.Exists(filePath))
{
fileData = File.ReadAllBytes(filePath);
tex = new Texture2D(2, 2);
tex.LoadImage(fileData);
}
return tex;
}
Run Code Online (Sandbox Code Playgroud) 我正在Kotlin中创建一个内容提供程序,它使用数据库存储数据并使用加载器查询它们,问题是,我需要从任何函数都可以访问我的DBHelper变量:onCreate,query,update等... java这很容易但是在Kotlin中,IDE告诉我必须初始化val,我尝试使用init块,但android studio说DBHelper必须在onCreate()中初始化
那么,如何在Kotlin中创建一个可以为类中的任何函数启用的val,并且可以在像Java这样的onCreate函数中初始化?
这是我的代码:
public class ProviderMMR : ContentProvider() {
var dbHelper
companion object Matcher{
var uriMatcher = UriMatcher(UriMatcher.NO_MATCH)
init{
uriMatcher.addURI(MMDContract.columnas.AUTHORITY,MMDContract.columnas.TABLA_FARMACIA,1)
}
}
override fun onCreate(): Boolean {
dbHelper = mmrbd(context)
return true
}
override fun insert(uri: Uri?, values: ContentValues?): Uri {
val db = dbHelper.writableDatabase
val rowID = db.insert(MMDContract.columnas.TABLA_FARMACIA, null, values)
val uri_actividad = ContentUris.withAppendedId(MMDContract.columnas.CONTENT_BASE_URI, rowID)
return uri_actividad
}
override fun query(uri: Uri?, projection: Array<out String>?, selection: String?, selectionArgs: Array<out String>?, sortOrder: String?): Cursor {
TODO("not implemented") //To …Run Code Online (Sandbox Code Playgroud) 我正在开发一个使用数据库的 Android 应用程序,每次用户插入新寄存器时,当前数据和时间都保存在数据库中使用
Calendar cal = Calendar.getInstance();
Run Code Online (Sandbox Code Playgroud)
所以,当我从数据库中检索数据时,得到了一个这样的字符串:
java.util.GregorianCalendar[time=1496007575129,areFieldsSet=true,lenient=true,zone=America/Mexico_City,firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2017,MONTH=4,WEEK_OF_YEK_OF_222 5,DAY_OF_MONTH=28,DAY_OF_YEAR=148,DAY_OF_WEEK=1,DAY_OF_WEEK_IN_MONTH=4,AM_PM=1,HOUR=4,HOUR_OF_DAY=16,MINUTE=39,SECOND=35,MILLISECOND=129,ZONE_060SET0=120,ZONE_600SET ]
当我尝试使用 SimpleDateFormat.parse 转换该字符串以在 RecyclerView 中显示它时,问题就出现了,我总是得到相同的日期:09/04/2017。
这是我的 RecViewAdapter.java 中的代码:
@Override
public void onBindViewHolder(ViewHolder holder,int position){
items.moveToPosition(position);
String s,d,p,f;
s = items.getString(ConsultaTomas.SISTOLICA);
holder.systolica.setText(s);
d = items.getString(ConsultaTomas.DIASTOLICA);
holder.diastolica.setText(d);
p = items.getString(ConsultaTomas.PULSO);
holder.pulso.setText(p);
f = items.getString(ConsultaTomas.FECHA);
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
try {
holder.fecha.setText(sdf.format(sdf.parse(f)));
}catch (ParseException e){
Log.d("PARSINGFECHA","Error al parcear fecha");
}
}
Run Code Online (Sandbox Code Playgroud)
其他数据在 RecView 中正确显示,日历字符串都不同,因此这些字符串中的日期/小时不相同。所以,问题是:
如何Calendar.toString()使用转换为日期SimpleDateFormat.parse()?
这是在真实设备中运行该应用程序的结果:

阅读完文档后,我正在设计一个可在Android中使用Room实现的数据库,我发现关于将Int或Long用作主键没有任何建议。
在某些地方,它们使用int主键定义实体:
@Entity
data class User(
@PrimaryKey var id: Int,
var firstName: String?,
var lastName: String?
)
Run Code Online (Sandbox Code Playgroud)
但是在其他地方,它表示如果要获取插入的最后一行的ID,则应使用long插入。
@Dao
interface MyDao {
@Insert(onConflict = OnConflictStrategy.REPLACE)
fun insertUsers(vararg users: User)
@Insert
fun insertBothUsers(user1: User, user2: User)
@Insert
fun insertUsersAndFriends(user: User, friends: List<User>)
}
Run Code Online (Sandbox Code Playgroud)
如果@Insert方法仅接收1个参数,则它可以返回long,它是插入项的新rowId。如果参数是数组或集合,则应返回long []或List。
因此,房间的主键应该是Int还是Long?是否有关于选择一种类型而不是另一种类型的最佳实践?
我正在使用C++在Visual Studio 2017中创建DirectX11应用程序,我需要在我的"GeometryGenerator.h"头文件中声明一个数据结构.
问题是当我尝试使用类型:我的头文件中的XMFLOAT3时,当我尝试运行项目时,我从Visual Studio收到错误并给我这样的消息:
“C4430: missing type specifier - int assumed”
Run Code Online (Sandbox Code Playgroud)
在我声明XMFLOAT3类型的变量的行中
这是我的代码:
#pragma once
#include "..\Common\DeviceResources.h"
#include "ShaderStructures.h"
#include "..\Common\StepTimer.h"
namespace DirectX11Engine
{
class GeometryGenerator {
public:
struct Vertex
{
Vertex() {}
Vertex(const XMFLOAT3& p, const XMFLOAT3& n, const XMFLOAT3& t, const XMFLOAT2& uv)
: Position(p), Normal(n), TangentU(t), TexC(uv) {}
Vertex(
float px, float py, float pz,
float nx, float ny, float nz,
float tx, float ty, float tz,
float u, float v)
: Position(px, py, pz), Normal(nx, …Run Code Online (Sandbox Code Playgroud)