小编Bog*_*rac的帖子

清单合并失败:uses-sdk:minSdkVersion 10不能小于库com.android.support:appcompat-v7:21.0.0-rc1中声明的版本L.

下载L预览版本后Android Studio,当我的项目有minSdkVersion19 时,出现上述错误.

此外,设置mindSdkVersion如下:

defaultConfig {
....
          minSdkVersion 'L'
....
    }
Run Code Online (Sandbox Code Playgroud)

关于来自以下方面的资源,我收到了如下的几十个错误AppCompat-v7-21:

/home/user/workspace/project/build/intermediates/exploded-aar/com.android.support/appcompat-v7/21.0.0-rc1/res/values-v21/values.xml
Error:Error retrieving parent for item: No resource found that matches the given name '@android:TextAppearance.Material.SearchResult.Subtitle'.
Run Code Online (Sandbox Code Playgroud)

所以我有两个问题:

  1. AS为什么抱怨minSdkVersion?我认为因为AppCompat-v7 21仅支持L版本; 但为什么 ?此外,它还将在秋季正式发布时仅支持L版本吗?因为这将是一个问题...或者它只是一个临时限制,以便不能将应用程序推送到Play商店,如Google I/O 2014主题演讲中所述?
  2. 为什么AppCompat-v7 21会抱怨这些错误,因为我已经将mindSdkVersion设置为L?

android android-5.0-lollipop

43
推荐指数
2
解决办法
5万
查看次数

永远不会调用Android ViewPager的onPageScrollStateChanged

我扩展了ViewPager类并实现了onPageChangeListener.我将此ViewPager与SherlockFragment中的CirclePageIndicator结合使用.ViewPager包含ImageViews和TextViews,没什么特别的.

每次更改页面时,我都需要在ViewPager下面做一些事情.所以,我想我需要使用onPageScrollStateChanged并验证状态是IDLE,还是其他什么.

问题是从3个实现的方法(onPageScrollStateChanged,onPageSelected和onPageScrolled),只调用onPageScrolled(我在每个方法中检查了一条日志消息).这是为什么 ?代码如下.

public class UninterceptableViewPager extends ViewPager implements OnPageChangeListener{

private ArrayList<TwoRowListViewAdapter> mAdaptersList = null;
private ListView mListView = null;
private ProgressBar mProgressBar = null;


public UninterceptableViewPager(Context context, AttributeSet attrs)
{
    super(context, attrs);
}

public boolean onInterceptTouchEvent(MotionEvent event)
{
    getParent().requestDisallowInterceptTouchEvent(true);
    return super.onInterceptTouchEvent(event);
}


public void setAdaptersList(ArrayList<TwoRowListViewAdapter> adaptersList)
{
    mAdaptersList = adaptersList;
}

@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels)
{
    super.onPageScrolled(position++, positionOffset, positionOffsetPixels);
    if (positionOffset == 0) // FIXME
        loadHistoryPage(position);
}

@Override
public void onPageSelected(int position) {} …
Run Code Online (Sandbox Code Playgroud)

android android-viewpager

26
推荐指数
1
解决办法
2万
查看次数

当前的 JDK 1.8 版有一个错误,该错误会阻止 Room 进行增量操作

我们正在尝试缩短多模块 Android 应用程序的构建时间,并且已经达到了尝试启用增量 KAPT 注释处理编译的程度。

  • 安卓工作室版本: v3.5.2
  • 房间版本: v2.2.1
  • 摇篮版本: v5.4.6
  • 安卓 Gradle 插件版本: v3.5.2
  • 科特林版本: v1.3.50

gradle.properties:

org.gradle.daemon=true
org.gradle.caching=true
org.gradle.parallel=true

kapt.incremental.apt=true
kapt.use.worker.api=true
kapt.include.compile.classpath=false

android.databinding.incremental=true
Run Code Online (Sandbox Code Playgroud)

build.gradle(在每个使用 Room 的模块中):

kapt {
    arguments {
        arg("room.incremental", "true")
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,在尝试使用gradlew assemble -scan命令对构建时间进行基准测试时,Gradle 会引发以下错误:

warning: Current JDK version 1.8.0_201-b09 has a bug (https://bugs.openjdk.java.net/browse/JDK-8007720) that prevents Room from being incremental. Consider using JDK 11+ or the embedded JDK shipped with Android Studio 3.5+.
ANTLR Tool version 4.5.3 used for code generation does not …
Run Code Online (Sandbox Code Playgroud)

android gradle kotlin kapt android-room

17
推荐指数
1
解决办法
5322
查看次数

无法保留嵌套片段

还有另一种保存嵌套片段状态的方法吗?或者,如果我们不这样做,为什么?谢谢 !

02-13 11:42:43.258: E/AndroidRuntime(7167): java.lang.IllegalStateException: Can't retain fragements that are nested in other fragments
02-13 11:42:43.258: E/AndroidRuntime(7167):     at android.support.v4.app.Fragment.setRetainInstance(Fragment.java:742)
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-fragmentactivity

13
推荐指数
2
解决办法
1万
查看次数

Maven或Gradle构建类型/变体

Android Gradle插件增加了对构建类型和构建变体的支持,使您可以在构建步骤(例如,调试或发布)中选择要构建的应用程序版本.

这对于Gradle项目来说是一个非常有用的功能,因为您可以拥有两个版本的应用程序,这些版本在某些情况下可能会有不同的行为,或者具有不同的配置文件或属性,具体取决于构建类型.

现在,我的问题是:Maven或Gradle的非Android Java项目是否有类似的功能/实现?我正在寻找专门针对Java Web应用程序,但我认为这个问题也可能有更大的目标.

java java-ee gradle maven

10
推荐指数
1
解决办法
2020
查看次数

控制器内的Ember访问模型

如何从控制器中访问模型?目前使用下面的代码返回"undefined is not a function"(如图JS失败...).

车型/ plan.js

import DS from 'ember-data';

export default DS.Model.extend({
    name:       DS.attr('string'),
    period:     DS.attr('number'),
    price:      DS.attr('number'),
});
Run Code Online (Sandbox Code Playgroud)

路线/ checkout.js

import Ember from 'ember';

export default Ember.Route.extend({

    model: function(params) {
        return this.store.find('plan', params.plan_id);
    }
});
Run Code Online (Sandbox Code Playgroud)

控制器/ checkout.js

import Ember from 'ember';

export default Ember.Controller.extend({

    submitPayment: function(error, result)
    {
          var plan = this.get('model');
    }
}
Run Code Online (Sandbox Code Playgroud)

router.js

Router.map(function() {
  this.route('checkout', {path: '/checkout/:plan_id'});
});
Run Code Online (Sandbox Code Playgroud)

ember.js ember-data

9
推荐指数
1
解决办法
2万
查看次数

尝试commitAllowingStateLoss时FragmentManager NullPointerException

上下文:我有Activitya Fragment和3 InnerFragments.当Fragment onDestroy()被调用时,我想从取下内片段FragmentManager.代码来自onDestroy()下方.

问题: FragmentManager投掷NullPointerException,可能在commitAllowingStateLoss()被调用时.我不明白为什么.

@Override
public void onDestroy()
{
    super.onDestroy();
    if (getFragmentManager().findFragmentById(R.id.fragment_framelayout_left) != null)
    {
        FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
        fragmentTransaction.remove(mLeftFragment);
        fragmentTransaction.commitAllowingStateLoss();
    }
}
Run Code Online (Sandbox Code Playgroud)

堆栈跟踪:

02-11 12:15:14.162: E/AndroidRuntime(25911): FATAL EXCEPTION: main
02-11 12:15:14.162: E/AndroidRuntime(25911): java.lang.NullPointerException
02-11 12:15:14.162: E/AndroidRuntime(25911):    at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1419)
02-11 12:15:14.162: E/AndroidRuntime(25911):    at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:429)
02-11 12:15:14.162: E/AndroidRuntime(25911):    at android.os.Handler.handleCallback(Handler.java:725)
02-11 12:15:14.162: E/AndroidRuntime(25911):    at android.os.Handler.dispatchMessage(Handler.java:92)
02-11 12:15:14.162: E/AndroidRuntime(25911):    at android.os.Looper.loop(Looper.java:137)
02-11 12:15:14.162: E/AndroidRuntime(25911): …
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-fragmentactivity

8
推荐指数
1
解决办法
1万
查看次数

GCM CCS服务器实现未接收上游消息

我已经为Android应用程序和Web服务器之间的双向消息实现了新的GCM CCS.下游消息(网络设备)完美运行.不幸的是,服务器上没有收到上游消息(device-web).它们似乎确实在客户端发送(请参阅下面的Android应用程序日志消息),但服务器上没有收到任何内容.

D/GCM? GcmService start Intent { act=com.google.android.gcm.intent.SEND flg=0x10 pkg=com.google.android.gms cmp=com.google.android.gms/.gcm.GcmService (has extras) } com.google.android.gcm.intent.SEND
Run Code Online (Sandbox Code Playgroud)

我认为Android方面没有任何问题,而是在服务器端.问题是,我无法弄清楚出了什么问题,因为连接仍然存在,我确实收到了来自GCM服务器的一些消息,比如ACK.那么为什么没有收到正常的消息?有人有任何想法吗?

值得一提的其他一些细节是使用的Web服务器是Glassfish,我在Servlet中启动XMPP连接.下面是一些片段.

编辑:正如我在答案中所述,阻止服务器上收到任何消息的主要问题已得到解决.但是,仍然没有收到相当多的消息(大约50%).

例如,我在后台线程上一个接一个地发送2条消息,每次用户在Android应用程序中进行更改(按下按钮,因此每批2之间至少有几秒钟).有时我在服务器上收到这两条消息,有时我只收到其中的一条消息,有时甚至什么都没发生......这是一个严重的问题,特别是对于依赖这项技术的应用程序而言.任何人都可以得到进一步的帮助,以解决这个问题吗?

更多信息:我很确定这不是客户端相关的,因为每条消息都被发送,就像你在上面的logcat日志中看到的那样,我也会在一段时间后收到"event:sent"GCM广播(不是立即,也许,也许像5分钟).所以它必须是基于GCM或基于服务器的东西.

public class CcsServlet extends HttpServlet
{
    private static Logger logger = Logger.getLogger(CcsServlet.class.getName());


    public void init(ServletConfig config) throws ServletException
    {
        CcsManager ccsManager = CcsManager.getInstance();
        try
        {
            ccsManager.connect();
        }
        catch (Exception e)
        {
            logger.warning("Cannot connect to CCS server.");
            e.printStackTrace();
        }
    }
}


public class CcsManager
{
    private static XMPPConnection connection;
    private static Logger logger = Logger.getLogger(CcsManager.class.getName()); …
Run Code Online (Sandbox Code Playgroud)

java xmpp google-cloud-messaging

8
推荐指数
1
解决办法
2093
查看次数

FragmentNavigator添加Fragment而不是替换透明背景

从AndroidX 使用导航库时,我想在旧目标的顶部显示一个半透明背景的片段。因此,基本上,代替FragmentNavigatorft.replace(mContainerId, frag)其内部引导()方法中,具有ft.add(mContainerId, frag)代替。

我尝试了子类化FragmentNavigator,但是该API受到非常严格的限制(很多私有变量和受包保护的方法),因此无法正确地覆盖该navigate()方法以进行更改。

那么,使用导航库实现对具有透明背景的片段的支持的正确方法是什么?

android android-fragments android-architecture-navigation

8
推荐指数
1
解决办法
368
查看次数

Android 4.2中的操作栏图标大小

Android 4.2中的操作栏图标大小是否已更改?我有一个120x48px HDPI图标,在Android 4.1及更低版本中完美呈现.它仍然是.

但是,在任何4.2设备上,它都被压缩到可以看到的48x48px.或类似的东西; 这绝对是一个广场.

有任何想法吗 ?谢谢 !

android android-icons android-actionbar

7
推荐指数
2
解决办法
6109
查看次数