下载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)
所以我有两个问题:
我扩展了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 应用程序的构建时间,并且已经达到了尝试启用增量 KAPT 注释处理编译的程度。
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) 还有另一种保存嵌套片段状态的方法吗?或者,如果我们不这样做,为什么?谢谢 !
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 Gradle插件增加了对构建类型和构建变体的支持,使您可以在构建步骤(例如,调试或发布)中选择要构建的应用程序版本.
这对于Gradle项目来说是一个非常有用的功能,因为您可以拥有两个版本的应用程序,这些版本在某些情况下可能会有不同的行为,或者具有不同的配置文件或属性,具体取决于构建类型.
现在,我的问题是:Maven或Gradle的非Android Java项目是否有类似的功能/实现?我正在寻找专门针对Java Web应用程序,但我认为这个问题也可能有更大的目标.
如何从控制器中访问模型?目前使用下面的代码返回"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) 上下文:我有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应用程序和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) 从AndroidX 使用导航库时,我想在旧目标的顶部显示一个半透明背景的片段。因此,基本上,代替FragmentNavigator做ft.replace(mContainerId, frag)其内部引导()方法中,具有ft.add(mContainerId, frag)代替。
我尝试了子类化FragmentNavigator,但是该API受到非常严格的限制(很多私有变量和受包保护的方法),因此无法正确地覆盖该navigate()方法以进行更改。
那么,使用导航库实现对具有透明背景的片段的支持的正确方法是什么?
Android 4.2中的操作栏图标大小是否已更改?我有一个120x48px HDPI图标,在Android 4.1及更低版本中完美呈现.它仍然是.
但是,在任何4.2设备上,它都被压缩到可以看到的48x48px.或类似的东西; 这绝对是一个广场.
有任何想法吗 ?谢谢 !
android ×7
gradle ×2
java ×2
android-architecture-navigation ×1
android-room ×1
ember-data ×1
ember.js ×1
java-ee ×1
kapt ×1
kotlin ×1
maven ×1
xmpp ×1