我有一个非常分层的应用程序(活动类似于League> Team> Position> Player)所以我已经完成了每个活动singleTop,以保持导航合理并防止重复实例.
现在我正在制作我的第二个应用程序,我已经看到它建议声明我的应用程序是singleTask为了防止重复的实例.有人可以帮助解释每种方法的优点吗?
我的新应用程序只是一个包含3个片段的活动,然后我可能会添加一个设置活动,也许还有一个FAQ.
编辑:我刚刚意识到这singleTask并没有像我想象的那样阻止我的应用程序的重复实例.现在正在寻找处理这个问题的正确方法......
android android-manifest android-activity android-navigation
我有一个采用给定颜色的功能,我希望它能使颜色变暗(将亮度降低20%左右).给出一个颜色(int),我无法弄清楚如何做到这一点.什么是正确的方法?
public static int returnDarkerColor(int color){
int darkerColor = ....
return darkerColor;
}
Run Code Online (Sandbox Code Playgroud) 我的应用程序将所有用户数据和首选项存储在SQLite数据库中,如果用户获得新手机,重新安装或恢复出厂设置,我希望将其保留.我已经在Android的数据备份指南和他们的Android备份服务中做了一些阅读,但在我开始之前仍然有一些问题.
dataChanged()然后在BackupManager调用之前再次发生相同的事情onBackup(),那么这些数据更改将如何处理?BackupManager是否只备份最新版本的数据库(应该包括两个更改)? FileBackupHelper,因为它看起来很简单.至少有一个开发人员似乎通过禁用Write Ahead Logging解决了至少一些兼容性问题.如果我采用这种方法,我可以期待什么样的失败率?如果非常高,我可能会考虑转换为CSV文件并在此过程中返回. 要确保备份代理不会在活动的同时读取或写入文件,每次执行读取或写入时都必须使用synchronized语句.
synchronized语句中对每个数据库进行读/写操作?即,我必须将此添加到我的活动从数据库加载或写入信息的每个地方?那是很多地方.synchronized?谢谢您的帮助.我只是想做到这一点,让我的用户在今年圣诞节获得新手机时感到高兴!
我一直在研究我的应用程序的最新版本,它测试得很好,但是当我发布ProGuard版本时,我会收到许多错误,主要是因为无法找到org.apache.http.*,我在项目中没有使用.我在整个项目中搜索了该文本但找不到它.我添加了一些依赖项,但没有我认为会使用HTTP.
我如何弄清楚为什么 ProGuard会抱怨并妥善解决?它说我可以用"--stacktrace选项"运行,但我无法弄清楚如何做到这一点.
我感谢任何帮助,因为我发现ProGuard常常令人困惑.
构建输出:
Warning: com.google.android.gms.internal.zzw$zza: can't find superclass or interface org.apache.http.client.methods.HttpEntityEnclosingRequestBase
Warning: com.google.android.gms.analytics.internal.zzam: can't find referenced class org.apache.http.NameValuePair
Warning: com.google.android.gms.analytics.internal.zzam: can't find referenced class org.apache.http.client.utils.URLEncodedUtils
Warning: com.google.android.gms.analytics.internal.zzam: can't find referenced class org.apache.http.client.utils.URLEncodedUtils
Warning: com.google.android.gms.analytics.internal.zzam: can't find referenced class org.apache.http.NameValuePair
Warning: com.google.android.gms.analytics.internal.zzam: can't find referenced class org.apache.http.NameValuePair
Warning: com.google.android.gms.analytics.internal.zzj: can't find referenced class org.apache.http.NameValuePair
Warning: com.google.android.gms.analytics.internal.zzj: can't find referenced class org.apache.http.client.utils.URLEncodedUtils
Warning: com.google.android.gms.analytics.internal.zzj: can't find referenced class org.apache.http.client.utils.URLEncodedUtils
Warning: com.google.android.gms.analytics.internal.zzj: can't find referenced class …Run Code Online (Sandbox Code Playgroud) 我刚刚将我的项目升级到API 23,并且我在以前一直有效的代码上遇到错误.当我dialog.dismiss()在下面调用Spinner监听器时发生崩溃.如果我不打电话dismiss在这个区域,它不会崩溃.
void showWeekViewOptionsDialog() {
AlertDialog.Builder b = new AlertDialog.Builder(getActivity());
final View view = getActivity().getLayoutInflater().inflate(R.layout.dialog_weekview_options, null);
final MaterialSpinnerCallsSameItemSelected spinner = (MaterialSpinnerCallsSameItemSelected) view.findViewById(R.id.spinner_weekview_days);
ArrayAdapter<Integer> dayListAdapter;
ArrayList<Integer> dayList = new ArrayList<Integer>();
dayList.add(2);
dayList.add(3);
dayListAdapter = new ArrayAdapter<Integer>(getActivity(), R.layout.my_spinner_item, dayList);
dayListAdapter.setDropDownViewResource(R.layout.my_spinner_dropdown_item);
spinner.setAdapter(dayListAdapter);
spinner.setSelection(dayListAdapter.getPosition(mWeekViewType));
b.setView(view);
final AlertDialog dialog = b.create();
spinner.setOnItemSelectedEvenIfUnchangedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
dialog.dismiss(); // crashes here!
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
dialog.show();
} …Run Code Online (Sandbox Code Playgroud) 用户可以购买我的应用程序的"专业版".当他们这样做时,我按如下方式存储和验证他们的购买.
SecureRandom.getInstance("SHA1PRNG", "Crypto")- 这就是问题!所以,不是最好的系统,但是对于我的简陋应用程序来说,所有内容都是模糊不清的.
问题是SecureRandom.getInstance("SHA1PRNG", "Crypto")在N 上失败,因为不支持"加密".我了解到依赖于特定的提供程序是不好的做法,并且N不支持加密.哎呀.
所以我遇到了一个问题:我依赖于值种子对的加密来始终具有相同的输出.Android N不支持我使用的加密提供程序,因此我不知道如何确保N上的加密输出与其他设备上的加密输出相同.
我的问题:
我的代码:
public static String encrypt(String seed, String cleartext) throws Exception {
byte[] rawKey = getRawKey(seed.getBytes(), seed);
byte[] result = encrypt(rawKey, cleartext.getBytes());
return toHex(result); // "unlock code" which must always be the same for the same seed and clearText accross android versions
}
private static byte[] getRawKey(byte[] seed, …Run Code Online (Sandbox Code Playgroud) random android cryptography secure-random android-7.0-nougat
我想在TabLayout中找到Tab的视图,以便我可以将它传递给另一个函数.我不确定如何找到视图.
myTabLayout.getTabAt(0).getCustomView()返回null.
我如何获得视图?
TabLayout tabLayout = (TabLayout) rootView.findViewById(R.id.tab_layout_main);
tabLayout.addTab(tabLayout.newTab().setText("Page1"));
tabLayout.addTab(tabLayout.newTab().setText("Page2"));
viewPager = (ViewPager) rootView.findViewById(R.id.pager_main);
pagerAdapter = new MyPagerAdapter(getActivity(), getChildFragmentManager(), tabLayout.getTabCount());
viewPager.setAdapter(pagerAdapter);
Run Code Online (Sandbox Code Playgroud) 我在ViewPager中有3个选项卡.默认情况下,选项卡2中的焦点位于第一个EditText中.当我从Tab 2导航到Tab 3并返回时,我发现焦点位于Tab 2 的最后一个 EditText中.如果我然后转到Tab 1然后返回,焦点将回到第一个EditText中.因此,当我向右"导航"时,焦点将转移到我所在片段的最后一个EditText.我不想要这个.我想把焦点放在我离开的地方或默认的位置.
此外,我不想简单地在返回时将焦点带回第一个EditText,因为它会在第一个位置向上滚动我的页面的最后一个EditText.我希望它在我的EditText中向上滚动焦点.
当我滑动到Tab 3时,有没有办法阻止焦点转到标签2中的最后一个EditText?
android android-layout android-edittext android-viewpager android-navigation
我有一个ListView,每个项目都有一些EditTexts.我对硬件键盘没有任何问题,但软键盘让人感觉不舒服.我有两个问题.
关于#1的更多细节:
OnFocusChangeListener告诉我它会获得焦点然后失去焦点.在视觉上,我看到光标出现在字段中,但是当键盘加载时光标跳开(如截图中所示)并且我不知道焦点在哪里.我已经玩了一下ListView的Focusable和DescendantFocusability属性,但无济于事.有什么建议?
每次有焦点的EditText滚动到视图外时,会显示另一个醉酒光标:

更新:相关代码.
使用ListView XML的活动布局:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res/com.NsouthProductions.gradetrackerpro"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.NsouthProductions.gradetrackerpro.Activity_EditCourseGPA" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="34dp"
android:text="Define the GPA and Percent scale for this course." />
<RadioGroup
android:id="@+id/radioGroup1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/textView1"
android:layout_marginLeft="5dp" >
<LinearLayout
android:id="@+id/linlay_rad_group_existing_scale"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<RadioButton
android:id="@+id/radio0_existing_scale"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0"
android:checked="true"
android:text="Existing Scale" />
<Spinner
android:id="@+id/spinner_existing_scales"
android:layout_width="wrap_content"
android:layout_height="33dp"
android:layout_gravity="right"
android:layout_weight="1" />
</LinearLayout>
<LinearLayout
android:id="@+id/linlay_rad_group_new_scale"
android:layout_width="match_parent"
android:layout_height="wrap_content" …Run Code Online (Sandbox Code Playgroud) android listview android-layout android-listview android-edittext
我没有问这个问题就太久了.我在Android中遇到过很多方法,这些方法已被弃用,但仍适用于较新版本的API.那么只要它有效,使用弃用方法的风险是什么?
这是一个更具体的问题.我正在使用TimePickers,并且在API 23中不推荐使用getCurrentHour()方法,并将其替换为getHour().我显然不能完全使用getHour(),因为大多数设备尚未在API 23上使用,但是getCurrentHour()对于最新版本的Android 使用"错误"?我应该做以下哪项?
getCurrentHour()直到几年过去,API 23成为我的新品minSdkVersion?getCurrentHour()或调用getHour()?谢谢你帮我学习.
android deprecated android-version android-timepicker deprecation-warning
android ×10
android-file ×1
android-tabs ×1
cryptography ×1
database ×1
deprecated ×1
listview ×1
proguard ×1
random ×1
sqlite ×1