Tag: 安卓

将ViewModel定义移动到包级别方法中

我想动议: ViewModelProviders.of(this).get(FooViewModel::class.java) 转换成一个包级别的方法。 像这样的东西: fun <T1, T2> T1.getViewModel(target: T1, targetViewModelClass: T2): Lazy<T2> { return ViewModelProviders.of(target).get(targetViewModelClass::class.java) } 但是这给了我两个错误: 和 问题:有没有办法来完成这个?

在Kotlin中按多个字段排序收集

比方说,我有一个人名列表,我需要首先按年龄,然后按名称排序。 来自C#的背景,我可以通过使用LINQ轻松实现这种语言: var list=new List<Person>(); list.Add(new Person(25, "Tom")); list.Add(new Person(25, "Dave")); list.Add(new Person(20, "Kate")); list.Add(new Person(20, "Alice")); //will produce: Alice, Kate, Dave, Tom var sortedList=list.OrderBy(person => person.Age).ThenBy(person => person.Name).ToList(); 如何使用Kotlin完成这个工作? 这是我试过的(这显然是错误的,因为第一个“sortedBy”子句的输出被第二个输入覆盖,导致列表按名称排序) val sortedList = ArrayList(list.sortedBy { it.age }.sortedBy { it.name })) //wrong

Stepstone – 材料步进器

Github:Stepstone材料步进器 任何人使用这个? 我只想问,我在一个步骤里面有4个以上的Edittexts,每个都有验证方法。 我只想知道在我的活动中应该在哪里调用这些错误捕获方法? 我的验证方法的例子在这里: class VerifyAppNameTask extends AsyncTask<String, Void, String> { // use doInBackground() to make network calls, the returned value is // sent to onPostExecute() @Override protected String doInBackground(String… data) { if (data[0].replace(" ","").isEmpty()) { f1 = true; return "1"; } else if (data[0].length() > 25) { f1 = true; return "2"; } […]

将Firebase中的数据加载到ExpandableList

我试图在我的应用程序中使用可扩展列表。 我遵循这些步骤 ,但我坚持如何从Firebase检索数据,将它们添加为我的代码Dummydata。 这里是主要的活动 public class MainActivity extends AppCompatActivity { ExpandableListAdapter myAdapter; ExpandableListView myList; List<String> listDataHeader; HashMap<String,List<String>> listDataChild; private FirebaseDatabase mFirebaseDatabase; private DatabaseReference mDatabaseReference; private ChildEventListener mChildEventListener; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // get the listview myList=(ExpandableListView)findViewById(R.id.Explist); prepareListData(); myAdapter= new ExpandableListAdapter(this,listDataHeader,listDataChild); myList.setAdapter(myAdapter); } private void prepareListData(){ mFirebaseDatabase= FirebaseDatabase.getInstance(); mDatabaseReference = mFirebaseDatabase.getReference().child("category"); //Read […]

为什么我的应用程序有两个快捷方式,每个都有不同的行为?

在android studio(1.0.2)中,我在自己的项目中创建了一个android库:我刚刚创建了一个新项目,并更改了build.gradle,将'com.android.application'替换为'com.android'。库“( github库 )。 所以建立它我以.aar文件结束。 请注意,我也尝试使用Kotlin语言来构建它。 然后,我将这个aar库文件导入到我自己的( github仓库 )的一个现有的android项目中,增加了对app build.gradle的调整。 尽管它起作用,至少在我的Android模拟器(Jeally Bean api的x86映像:4.2.2)上,我有一个奇怪的行为: 在应用程序列表中,我为我的新应用程序获得了两个快捷方式 而且,一个快捷方式只是从图书馆的主要活动开始,另一个启动我的主人ChessPositionManager活动,并立即进入包含的FileExplorer活动。 那么,具有不同行为的两个不同图标的行为是可以解释的吗? 我可以避免它,同时保持这样一个事实,即我分别编码图书馆和我的申请? (事实上​​,一个图书馆模块可以很容易地添加到任何项目,但它仍然与这个项目耦合在一起,远远超出我所理解的)。

Android Studio – java.io.IOException:无法生成v1签名

在3.0 Canary 4之后,我的Android Studio更新到所有新版本后,我得到这个错误。(我使用v3.0,因为它速度更快,而且没有必要插入Kotlin。) 它看起来像构建流的问题,它不能生成或签署我的APK文件的调试和发行版本。 我也尝试删除我的debug.keystore ,重新启动AndroidStudio和系统(!!!),但它并没有解决。 这是一个完整的Gradle日志: 失败:生成失败,出现异常。 出了什么问题:执行任务失败':chris-app:packageDemoDebug'。 java.io.IOException:无法生成v1签名 试试:运行–info或–debug选项来获得更多的日志输出。 异常是:org.gradle.api.tasks.TaskExecutionException:任务':chris-app:packageDemoDebug'的执行失败。 org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:70)org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:100)在org.gradle.api.internal的org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54)上的.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:64) .tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:88)at org.gradle.api.internal.tasks.execution .ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:52)at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)at org.gradle.api.internal.tasks .execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54)at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter .execute(CatchExceptionTaskExecuter.java:34)at org.gradle.execution.taskgraph.DefaultTaskGraphExeter $ $ EventFiringTaskWorker $ 1.run(DefaultTaskGraphExecuter.java:243)at org.gradle.internal.progress.DefaultBuildOperationExecutor $ RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:在org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:197)org.gradle.internal.progress .DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:107)at org.gradle.execution.taskgraph.DefaultTaskGraphExeterter $ EventFiringTaskWo 在org.gradle.execution.taskgraph.DefaultTaskPlanExecutor $ TaskExecutorWorker.processTask(DefaultTaskPlanExecutor.java:$)上执行org.gradle.execution.taskgraph.DefaultTaskGraphExeter $ $ EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:225) 124)在org.gradle.execution.taskgraph.DefaultTaskPlanExecutor $ TaskExecutorWorker.access $ 200(DefaultTaskPlanExecutor.java:80)在org.gradle.execution.taskgraph.DefaultTaskPlanExecutor $ TaskExecutorWorker $ 1.execute(DefaultTaskPlanExecutor.java:105)在org.gradle .execute.taskgraph.DefaultTaskPlanExecutor $ TaskExecutorWorker […]

原生Android应用程序的定义是什么?

“原生Android应用程序”这个术语的定义是什么? 背景 :我已经使用Java在Android SDK中学习和开发Android应用两年多了。 我还没有发现自己需要为我的项目(还)使用C / C ++库。 当我申请工作和合同职位时,我偶然遇到了“原生Android应用程序”这个词,我发现自己不确定自己是否合格。 我一直在网上寻找确切的定义,但是下面的定义让我感到困惑,我希望有人能够一劳永逸地澄清这个术语: 定义A:在本机Android应用程序中,“本地应用程序”与“Web应用程序”是使用带有Java(或现在的Kotlin)的Android SDK和使用带Objective-C或Swift的xCode构建的本机iOS应用程序 定义B:另一个谷歌搜索的原生Android应用程序指向我的Android NDK,有一个描述“Android NDK是一个工具集,可以让你在本机代码中实现你的应用程序的一部分..”这个定义对我来说更直观,得到这个词是原生的。 当我看到工作描述时,当他们要求“在原生android应用程序开发中的经验”时,我的困惑是什么意思?

如何在Android中使用VectorDrawable <selector>

我试图使用VectorDrawable收音机切换按钮,但我在API级别17设备中' 无效的可绘制标签矢量 '错误。 <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/ic_list_on" android:state_checked="true" /> <item android:drawable="@drawable/ic_list_off" android:state_checked="false" /> </selector> 我在一个片段中使用它,并且在包装片段的Activity中将setCompatVectorFromResourcesEnabled设置为true。 class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { AppCompatDelegate.setCompatVectorFromResourcesEnabled(true) 另外,我设定了 vectorDrawables.useSupportLibrary = true 在build.gradle 而这是查看xml, <RadioGroup android:id="@+id/list_view_type" android:layout_width="match_parent" android:layout_height="50dp" android:layout_gravity="end" android:gravity="center_vertical|end" android:padding="15dp" android:orientation="horizontal"> <android.support.v7.widget.AppCompatRadioButton android:id="@+id/list_view" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="15dp" android:layout_marginRight="15dp" android:background="@drawable/grid_btn_toggle" android:button="@android:color/transparent" android:gravity="center" android:maxLines="1" android:text="" /> <android.support.v7.widget.AppCompatRadioButton android:id="@+id/grid_view" android:layout_width="wrap_content" […]

从后台任务或服务中确定当前的前台应用程序

我希望有一个应用程序在后台运行,它知道什么时候内置的应用程序(消息传递,联系人等)正在运行。 所以我的问题是: 我应该如何在后台运行我的应用程序。 我的后台应用程序如何知道当前在前台运行的应用程序是什么。 来自有经验的人的反应将不胜感激。

尝试在Android Studio 2.2.1中运行新项目时出错

我只是更新到Android Studio 2.2.1的Mac。 然后我将JDK更新到版本8.尝试启动一个新项目并运行它。 我得到了以下错误: 错误:(1,1)评估项目':app'时发生问题。 java.lang.UnsupportedClassVersionError:com / android / build / gradle / AppPlugin:不支持major.minor版本52.0 我也试着回到JDK版本7,因为它在谷歌网站上说,JDK 8对于Mac来说是不稳定的。 仍然有同样的错误。