我们刚刚更改了应用程序以使用appcompat-v7 support库,以便利用支持操作栏并支持Material主题.使用v21.0.0 of appcompat-v7(以及v21.0.0 of support-v4)我们现在看到的崩溃Google Play和Crashlytics仅来自三星设备runningAndroid v4.2.2 . Here is the stack trace from Google Play and the app appears to crash as soon as theactionbar`显示和/或无效.
java.lang.NoClassDefFoundError: android.support.v7.internal.view.menu.MenuBuilder
at android.support.v7.app.ActionBarActivityDelegateBase.initializePanelMenu(ActionBarActivityDelegateBase.java:991)
at android.support.v7.app.ActionBarActivityDelegateBase.preparePanel(ActionBarActivityDelegateBase.java:1041)
at android.support.v7.app.ActionBarActivityDelegateBase.doInvalidatePanelMenu(ActionBarActivityDelegateBase.java:1259)
at android.support.v7.app.ActionBarActivityDelegateBase.access$100(ActionBarActivityDelegateBase.java:80)
at android.support.v7.app.ActionBarActivityDelegateBase$1.run(ActionBarActivityDelegateBase.java:116)
at android.os.Handler.handleCallback(Handler.java:725)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:176)
at android.app.ActivityThread.main(ActivityThread.java:5299)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)
运行v4.2.2的其他设备和模拟器不会出现此行为.我的理解是,许多Google应用已经在使用此新版本来appcompat显示操作栏.如果这些应用程序没有报告这些设备上的崩溃,那么了解如何避免/修复这些应用将会很有帮助.
我向谷歌报告这是一个错误,但由于它是一个开发问题而被关闭了.虽然我确实同意这可能是这种情况,但我想知道是否/如何使用任何人appcompat-v7 v21.0.0并且不会发生崩溃Samsung 4.2.2 devices …
android proguard android-appcompat samsung-mobile android-4.2-jelly-bean
有没有人知道Android手机上的堆大小是否是根据操作系统版本中设置的常量值,或者这是电话制作者可以决定的设置?
堆大小是否与手机上的RAM量成正比?
我只找到了人们说应用程序的堆大小为16M的文章.但是,这些文章有点陈旧.从我看来,作为一个例子,在一个特定型号上,堆大小从大约20M到24M不等.这款手机拥有768M的RAM.
好的,所以我是Emacs的狂热用户,并且倾向于远离使用IDE,除非我绝对必须并且我看到建议使用带有插件的Eclipse来开发android.我只是想知道是否真的有必要使用Eclipse插件(或其他一些)?
在onResume()我做:
registerReceiver(timeTickReceiver, new IntentFilter(Intent.ACTION_TIME_TICK));
Run Code Online (Sandbox Code Playgroud)
并在onPause()中:
unregisterReceiver(timeTickReceiver);
Run Code Online (Sandbox Code Playgroud)
我在Android Developer Console中看到"java.lang.IllegalArgumentException:Receiver not registered"报告(只有2个报告,我的应用程序有数千个用户).异常由unregisterReceiver()触发.可能发生什么?用try-catch围绕它我感觉不自信.
有谁知道是否可以在Eclipse中禁用DDMS?我的意思是DDMS不应该在启动Eclipse时启动.
我想只使用终端的DDMS,但是当我启动它时,它一直说:
无法打开选定的VM调试端口(8700).确保没有运行DDMS或eclipse插件的其他实例.如果它被其他东西使用,请在首选项中选择一个新的端口号.
我比独立的DDMS更喜欢Eclipse中内置的DDMS,主要是因为它更容易在DDMS和源代码之间切换.而且,当DDMS作为Eclipse的插件运行时,我觉得它被放在同一个程序中.此外,由于DDMS非常不稳定并且崩溃很多,因此更容易重新启动DDMS而不必重新启动"不那么快"的Eclipse.
我正在应用程序中构建搜索,并且需要有一种方法可以将我从服务器获得的建议作为JSON数组放入快速搜索框下方显示的建议列表中.
有一种简单的方法可以让快速搜索框读取这些资源吗?
目前我正在尝试使用ContentProvider,但是接口方法清楚地表明应该查询数据库以获取建议.我想如果您正在搜索存储在应用程序中的数据,那么使用ContentProvider是正确的方法.但是,我不太确定,如果您需要查询网络资源,这是正确的方法.
我将从网络获得的建议保存到本地数据库是没有意义的,因为建议及其命中率会不时变化.
有谁有这个问题?或者可以指出我在类似问题的方向?我在堆栈上找不到提到网络建议的问题.
我在Android应用中使用AdMob视图,但我无法在应用中获得任何广告.
作为参考,我已经添加了查看到ListView由达恩·戴尔解释这里
编辑:我正在使用GoogleAdMobAdsSdk-4.1.1.Google AdMob Ads SDK 4.1.0版的发行说明中说:
"... - 添加了对AdRequest.addTestDevice()和AdRequest.setTestDevices()的支持.请注意,AdRequest.setTesting()现已弃用...."
这是广告插入我的ListView的方式:
public View getView(int position, View convertView, ViewGroup parent) {
// Some other code
// Reusing convertView etc.
AdView adView =
new AdView((Activity) getContext(), AdSize.BANNER,
"/xxxxxx/ca-pub-xxxxxxx/my_ad_unit");
for (int i = 0; i < adView.getChildCount(); i++) {
adView.getChildAt(i).setFocusable(false);
}
adView.setFocusable(false);
float density = getContext().getResources().getDisplayMetrics().density;
int height = Math.round(50 * density);
AbsListView.LayoutParams params = new AbsListView.LayoutParams(
AbsListView.LayoutParams.FILL_PARENT, height);
adView.setLayoutParams(params);
AdRequest request = new AdRequest();
request.addTestDevice("xxxxxxxxxxxxxxxxx");
adView.loadAd(request);
// other stuff
// returning …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用AutoCompleteTextView(ACTV)来显示我从网络资源中获取的结果.我已将完成阈值设置为2,我可以看到在输入字符时触发了请求.
我得到的结果是正确的.让我说我写"ca",我得到结果"汽车"作为自动完成.我有一个回调函数,它接收来自AsyncTask的结果并将结果放入ArrayAdapter.然后我在ACTV上调用.showDropDown()并显示一个空的下拉列表(正常元素大小的一半).然后,如果我输入最后一个字母"r"并且ACTV显示"car",则显示下拉列表并且结果突然出现在列表中.
如果我输入了两个字符(返回有效结果),则删除最后一个字母也会出现同样的情况.删除该字母后,"car"将显示为自动完成值.
有谁有这个问题?看起来适配器已经填充了结果,但结果直到我做的下一个操作才会显示.我已经尝试在将结果添加到适配器后运行.notifyDataSetChanged(),但是不应该这样做,或者?
我试图通过这个:
Intent i=new Intent(ctx,SpendingsDetails.class);
extras.putString("SpendingAmount", "1");
extras.putString("SpendingDescription","2");
extras.putString("SpendingDate","3");
i.putExtras(extras);
startActivityForResult(i,1);
Run Code Online (Sandbox Code Playgroud)
获取信息的活动会执行以下信息.
spendingAmount=(TextView)findViewById(R.id.spending_Sum);
spendingDetails=(TextView)findViewById(R.id.spending_Details);
Bundle extras=getIntent().getExtras();
if(extras!=null)
{
spendingAmount.setText(extras.getString("SpendingAmount"));
spendingDetails.setText(extras.getString("SpendingDescription"));
}
Run Code Online (Sandbox Code Playgroud)
我收到一个错误,应用程序无法在第一个活动屏幕上继续.我做错了什么?