在侦听ActionBarSherlock中的关键事件时,为了在ICS前设备上显示溢出菜单,我正面临一个有趣的问题.看起来我无法区分简单的按键与用户长按菜单键以显示IME的情况.两个KeyEvent实例完全相同,看起来像这样:

是否有一种直接的方法来区分这两个不同的事件?
我正在创建一个Maven插件,它具有相当独特的正确操作要求:它需要生成自己的新进程,然后等待这些进程完成任务.
虽然这在命令行上相对简单,但Maven插件不会像传统Java代码那样被调用,因此没有类路径.我无法弄清楚如何在插件中解析正确的类路径,这样我就可以生成一个新的JVM(在插件中调用另一个类的Main方法).
使用当前工件MavenProject我可以获得Artifact对自己(插件)的引用并获取它在本地Maven存储库中的相对目录:
Artifact self = null;
for (Artifact artifact : project.getPluginArtifacts()) {
if ("my-group-id".equals(artifact.getGroupId()) && "my-artifact-id".equals(artifact.getArtifactId())) {
self = artifact;
break;
}
}
if (self == null) {
throw new MojoExecutionException("Could not find representation of this plugin in project.");
}
for (ArtifactRepository artifactRepository : project.getPluginArtifactRepositories()) {
String path = artifactRepository.pathOf(self);
if (path != null) {
getLog().info("relative path to self: " + path);
break;
}
}
Run Code Online (Sandbox Code Playgroud)
如何获取对其所有依赖项(和传递依赖项)的引用,以便我可以为新调用构造完整的类路径?我看到它self有一个依赖过滤器,但我不知道在哪里应用它.
这是在插件中创建"我自己"的新流程的正确方法吗?有没有更好的办法?
在操作栏中,下面显示了一个名为"up ADVance"的图标(最左边一个):

在我的Activity onCreate()方法中,我设置了以下内容:
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setDisplayShowHomeEnabled(true);
Run Code Online (Sandbox Code Playgroud)
我的问题是:
如何onClickListener在这个"up ADVance"图标上实现,这样当用户点击它时,应用程序将被导航到上层层次结构?
如何在动作栏上只有左箭头没有"up ADVance"部分的android默认图标?
是否可以使用Butterknife注入测试类的视图?视图被注入到由MainActivity类创建和提交的片段中.
这是我的测试类的代码:
public class MainActivityTest extends ActivityInstrumentationTestCase2<MainActivity> {
private MainActivity mMainActivity;
private Button learnButton;
private Button teachButton;
@SuppressWarnings( "deprecation" )
public MainActivityTest() {
super("com.example.application.app", MainActivity.class);
}
protected void setUp() throws Exception {
super.setUp();
mMainActivity = getActivity();
learnButton = (Button) mMainActivity.findViewById(R.id.buttonLearn);
teachButton = (Button) mMainActivity.findViewById(R.id.buttonTeach);
}
Run Code Online (Sandbox Code Playgroud)
但是我使用Butterknife在我的片段中注入视图:
public class ChooseActionFragment extends Fragment {
@InjectView(R.id.buttonTeach) Button buttonTeach;
@InjectView(R.id.buttonLearn) Button buttonLearn;
public ChooseActionFragment() { }
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main, container, false);
ButterKnife.inject(this, rootView); …Run Code Online (Sandbox Code Playgroud) 我正在开发Android 2.1 API 7应用程序.要实现操作栏,我正在使用ActionbarSherlock库.
使用sherlock库一切顺利,我可以使用以下代码在我的项目中使用它实现操作栏.
res/menu/action_menu.xml:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/new_payment_1"
android:title="@string/new_payment"
/>
<item
android:id="@+id/label_1"
android:icon="@drawable/ic_launcher"
android:showAsAction="always"/>
<item
android:id="@+id/label_2"
android:title="text2"
android:showAsAction="always"/>
<!-- overflow section of action bar -->
<item android:title="title2"/>
<item android:title="title3"/>
<item android:title="title4"/>
</menu>
Run Code Online (Sandbox Code Playgroud)
在我的Activity类中:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.action_menu, menu);
return true;
}
Run Code Online (Sandbox Code Playgroud)
我用上面的代码成功地获得了操作栏.在Android 3.2平台上没问题.
但问题是如果我在Android 2.1平台上运行我的应用程序,操作栏上的操作栏没有溢出部分.为什么???在旧Android平台上使用Sherlock库时,任何人都遇到过同样的问题?
(操作栏的PS"溢出部分"是操作栏的最右侧部分,它隐藏了一些项目,如弹出菜单.更多信息,请点击此处)
我正在尝试发布图像的上传进度,使用okhttp作为我的客户端和mimecraft来上传它们以打包多部分文件。
当数据被写入套接字时,我添加了日志以写入字节数(如果我能正确告诉的话,以4kb的块为单位),然后上传。
问题是,虽然每次写入数据块时我都会在输出流上调用flush,但直到将〜800kb写入输出流后,似乎都没有上载。一旦达到该点,它似乎会上传〜100kb,然后该应用再向输出流写入另外100kb(如释放的空间,可以写更多一点),然后继续。
这样的结果是(通过1.2mb文件)前800kb几乎立即被写入/报告,然后开始上载(通过charles网络软件跟踪),然后在下一个800kb中开始读取/写入/上载100kb几秒钟后,一旦我将最后一个字节写入输出流,应用程序就会报告已写入100%的上传内容。尽管这是正确的,但由于网络客户端仍在上传仍在网络缓冲区中的最后800kb,它又在那儿坐了5-10秒,然后才完成请求。
有没有人有这种经验,或者知道这是否是okhttp中的常见问题?
干杯
编辑:如果我上传的文件少于800kb,我测试了250kb和500kb,它们在上传之前立即被100%写入流中,但是3mb的图像仍将上传800kb,然后以大约100kb的块数滴答,并且每次写入一些文件时,写入循环都会坐在那里,另外写入100kb。
我正在制作一个新的Android应用程序,我正在使用动作栏sherlock库.
我将该库作为项目导入并出现了两个错误.首先,我的所有布局都没有在gen.R文件中找到,因为我没有gen.R文件."R无法解析为变量"
其次,我在一些论坛中读到干净和重建可以提供帮助,但这并没有解决我的问题.干净后,我收到了这个错误:
[2011-11-29 12:17:08 - DroidFridge] C:\Users\Felix Wackernagel\Downloads\JakeWharton-ActionBarSherlock-79a1bbc\library\res\values-v11\abs__styles.xml:4: error: Error retrieving parent for item: No resource found that matches the given name 'android:Theme.Holo'.
[2011-11-29 12:17:08 - DroidFridge] C:\Users\Felix Wackernagel\Downloads\JakeWharton-ActionBarSherlock-79a1bbc\library\res\values-v11\abs__styles.xml:47: error: Error: No resource found that matches the given name: attr 'android:actionBarSize'.
[2011-11-29 12:17:08 - DroidFridge] C:\Users\Felix Wackernagel\Downloads\JakeWharton-ActionBarSherlock-79a1bbc\library\res\values-v11\abs__styles.xml:48: error: Error: No resource found that matches the given name: attr 'android:actionBarStyle'.
[2011-11-29 12:17:08 - DroidFridge] C:\Users\Felix Wackernagel\Downloads\JakeWharton-ActionBarSherlock-79a1bbc\library\res\values-v11\abs__styles.xml:50: error: Error: No resource found that matches the given name: attr 'android:actionBarTabBarStyle'.
[2011-11-29 12:17:08 …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Maven中央API为最新版本的工件提供动态下载链接.虽然这适用于普通的jar,但我似乎无法将其链接到工件的'jar-with-dependencies'版本.
使用该com.ning:nagios工件,可以下载最新版本
我假设我可以使用l查询参数(基于链接的API)来指定'jar-with-dependencies'分类器,但链接只下载普通的jar.
有没有办法链接到这个版本的工件?
我想设置一个BackgroundImage到我用"ActionBar Sherlock"库导入的ActionBar.但是,我无法在互联网上找到任何关于如何用XML明确设置BackgroundImage的链接.
这里有人有提示他可以给我:)?
如何使用@SuppressWarning注释抑制以下错误?
该方法
Foo.trololo()不会覆盖继承的方法,Bar因为它对其他包是私有的
据我所知,唯一的方法是覆盖@SuppressWarning("all")我不希望做的整个方法.
为了澄清:两种方法的命名和范围都是有意识的选择,并且两个类被故意放入不同的包中,因为知道方法彼此不可见.我只想宣布我承认我在做什么,不想被警告.
android ×7
maven ×2
annotations ×1
butterknife ×1
eclipse ×1
java ×1
maven-plugin ×1
mimecraft ×1
nexus ×1
okhttp ×1
sonatype ×1