我创建了一个名为 MyEditText(扩展 EditText)的自定义 EditText 对象,以便覆盖 onSelectionChanged(int start, int end) 方法。当我这样做并尝试在我的 XML 布局中引用这个对象类型时,我总是收到一个错误膨胀类消息。这是我目前拥有的:
<cse.intro.networking.security.MyEditText
android:layout_width="match_parent" android:id="@+id/editText2"
android:layout_height="match_parent" android:text="@string/editTextBoxInit">
</cse.intro.networking.security.MyEditText>
Run Code Online (Sandbox Code Playgroud)
我的EditText.java:
package cse.intro.networking.security;
import android.content.Context;
import android.util.Log;
import android.widget.EditText;
public class MyEditText extends EditText {
private final String tag = "SimpleGUI";
public MyEditText(Context context) {
super(context);
}
@Override
public void onSelectionChanged(int selStart, int selEnd) {
Log.v(tag, "onSelectionChanged!");
}
}
Run Code Online (Sandbox Code Playgroud) 您建议在Grails + Tomcat(+ Ubuntu)环境中持续集成什么工具?詹金斯?哈德森?别的什么?我不是在寻找任何复杂的东西......简单就可以了.
当我在我的项目中包含espresso快照jar时,我的gradle编译挂起然后踢出以下消息:
UNEXPECTED TOP-LEVEL ERROR:
java.lang.OutOfMemoryError: GC overhead limit exceeded
at java.util.Arrays.copyOf(Arrays.java:2219)
at java.util.ArrayList.toArray(ArrayList.java:358)
at java.util.ArrayList.<init>(ArrayList.java:164)
at com.android.dx.ssa.SsaMethod.getUseListCopy(SsaMethod.java:660)
at com.android.dx.ssa.ConstCollector.updateConstUses(ConstCollector.java:333)
at com.android.dx.ssa.ConstCollector.run(ConstCollector.java:147)
at com.android.dx.ssa.ConstCollector.process(ConstCollector.java:75)
at com.android.dx.ssa.Optimizer.runSsaFormSteps(Optimizer.java:181)
at com.android.dx.ssa.Optimizer.optimize(Optimizer.java:99)
at com.android.dx.ssa.Optimizer.optimize(Optimizer.java:72)
at com.android.dx.dex.cf.CfTranslator.processMethods(CfTranslator.java:303)
at com.android.dx.dex.cf.CfTranslator.translate0(CfTranslator.java:139)
at com.android.dx.dex.cf.CfTranslator.translate(CfTranslator.java:94)
at com.android.dx.command.dexer.Main.processClass(Main.java:682)
at com.android.dx.command.dexer.Main.processFileBytes(Main.java:634)
at com.android.dx.command.dexer.Main.access$600(Main.java:78)
at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:572)
at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:284)
at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:166)
at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)
at com.android.dx.command.dexer.Main.processOne(Main.java:596)
at com.android.dx.command.dexer.Main.processAllFiles(Main.java:498)
at com.android.dx.command.dexer.Main.runMonoDex(Main.java:264)
at com.android.dx.command.dexer.Main.run(Main.java:230)
at com.android.dx.command.dexer.Main.main(Main.java:199)
at com.android.dx.command.Main.main(Main.java:103)
:Project:dexFlavorEnterpriseDebug FAILED
Run Code Online (Sandbox Code Playgroud)
根据我的研究,这听起来像是一个依赖性问题.你会怎么建议我去解决这个问题?
我尝试碰撞堆空间(-Xmx2048),但是在我的计算机变得越来越热但未完成时,构建运行了很长一段时间(几分钟).没有这个jar,编译永远不会超过一分钟.
我有一个场景,当视图被回收时,布局是不正确的.我的行项目布局如下(注意wrap_contentLinearLayout宽度weight,,和ellipsize):
<LinearLayout
android:id="@+id/header"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<TextView
android:id="@+id/text1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:ellipsize="middle"
android:singleLine="true"
tools:text="Ann really freaking long last name Droid"
/>
<TextView
android:id="@+id/text2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<TextView
android:id="@+id/text3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
row1 | 1-short-text | 2-text | 3-more-text
----------------------------------------------------
row2 | 1-short-text | 2-text | 3-more-text
----------------------------------------------------
row3 | 1-long-ellipsiz...text | 2-text | 3-more-text
----------------------------------------------------
row4 | 1-tiny | 2-text-longer | 3-more-text-blah
----------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
row1 | 1-...et | 2-text | 3-more-text …Run Code Online (Sandbox Code Playgroud) 我是Dagger的新手,并试图找出为什么没有注入特定的依赖.尝试在片段中注入Presenter时出现以下错误:
Caused by: java.lang.IllegalArgumentException: No inject registered for members/com.company.myapp.view.fragment.OverviewFragment. You must explicitly add it to the 'injects' option in one of your modules.
at dagger.ObjectGraph$DaggerObjectGraph.getInjectableTypeBinding(ObjectGraph.java:302)
at dagger.ObjectGraph$DaggerObjectGraph.inject(ObjectGraph.java:279)
at com.company.myapp.view.fragment.OverviewFragment.initializePresenter(OverviewFragment.java:50)
at com.company.myapp.view.fragment.BaseFragment.onViewCreated(BaseFragment.java:28)
at com.company.myapp.view.fragment.OverviewFragment.onViewCreated(OverviewFragment.java:84)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:871)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1040)
at android.app.FragmentManagerImpl.addFragment(FragmentManager.java:1142)
at android.app.Activity.onCreateView(Activity.java:4786)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:689)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:290)
at android.app.Activity.setContentView(Activity.java:1929)
at com.company.myapp.view.activity.HomeActivity.onCreate(HomeActivity.java:23)
at android.app.Activity.performCreate(Activity.java:5231)
Run Code Online (Sandbox Code Playgroud)
...
我有一个ApplicationModule,它可以提供必要的应用程序范围的模块(例如分析).
@Module(
injects = {
BaseApplication.class,
MyApplication.class,
TestMyApplication.class
},
includes = { DomainModule.class }
)
public class MyModule {
private …Run Code Online (Sandbox Code Playgroud) 作为Android开发人员,我是否负责处理用户快速重复地按下按钮的情况?或者这被认为是用户滥用?从后端的数据角度来看,没有什么不好的事情发生.
我有一个按钮,选择后进行服务器调用.一旦服务器响应,就会从返回的消息中生成一个活动(使用处理程序).在某些情况下,如果用户反复地混淆按钮,重复的活动可以开始堆叠并且可能导致糟糕的用户体验(即,用户可能需要多次点击后退按钮才能返回到前一个屏幕)
编辑:我遗漏了一些细节.现在正在等待服务器响应时显示一个微调器对话框.这会拦截所有点击.问题在于,在某些情况下,解雇微调器和启动新活动之间的时间足够长,以便用户进行更多点击.
现在我正在禁用按钮,但似乎有点黑客可能有更好的解决方案.