我目前正在创建一个自定义注释,它可以完成@TargetApi()与我的风格相同的工作.
在我的情况下,我需要使用某种方法(在一个被调用的类中Navigator)将我的应用程序重定向到另一个屏幕,但我只在其中一种风格中创建了这个屏幕.因此,当我切换到另一个Build Variant时,我的Android Studio会显示错误:Unresolved reference正如预期的那样.
我有3种口味:device1,device2和device3.还有device1这个独特的屏幕(称为UniqueActivity),所有口味都可以访问Navigator课程.
我看到这样的用例:
@TargetFlavor(currentFlavor = BuildConfig.FLAVOR, targetFlavor = "device1")
Run Code Online (Sandbox Code Playgroud)
所以我想到预处理器注释忽略方法时所选的味道(通过Build Variant)与目标味道不对应.我跟着这篇文章.
这就是我取得的成就:
TargetFlavor注释:
@Retention(RetentionPolicy.SOURCE)
@Target(ElementType.METHOD)
public @interface TargetFlavor {
String currentFlavor();
String targetFlavor();
}
Run Code Online (Sandbox Code Playgroud)
TargetFlavorProcessor:
public class TargetFlavorProcessor extends AbstractProcessor {
private Filer filer;
private Messager messager;
private Elements elements;
private Map<String, Boolean> methodWithFlavor;
@Override
public synchronized void init(ProcessingEnvironment processingEnv) {
super.init(processingEnv);
filer = …Run Code Online (Sandbox Code Playgroud) 就像我的标题所说的那样,我正在寻找getActivity()我ActionBarActivity班上相当于我的课程Android project.
我想Activity在AsyncTask声明对象中传递一个参数,因为我Activity在自定义AsyncTask扩展类中使用了一个对象
这是我项目的一个示例最简单的代码
public class EventCreator extends ActionBarActivity {
private Context context;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_even_creator);
View v = getLayoutInflater().inflate(R.layout.activity_even_creator,null);
this.context = this.getBaseContext();
final Button createButton = (Button)findViewById(R.id.createEventButton);
createButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AsyncTask<Void,Void,Boolean> eventCreatorSend = new SendEvents(/* here need activity object */);
eventCreatorSend.execute();
}
});
}
class SendEvents extends AsyncTask<Void,Void,Boolean> {
public Activity act;
SendEvents(Activity a) …Run Code Online (Sandbox Code Playgroud) android android-asynctask android-activity android-actionbaractivity
我正在尝试编译和部署我的Android应用程序,但我遇到了一个MultiDex问题:
Error:Execution failed for task ':app:transformClassesWithMultidexlistForDebug'.
> java.lang.UnsupportedOperationException (no error message)
Run Code Online (Sandbox Code Playgroud)
我已经尝试了很多修复,但它们不起作用.
我已经尝试过的:
1. multiDexEnabled是的
2. dexOptions
dexOptions {
javaMaxHeapSize "4g"
preDexLibraries = false
}
Run Code Online (Sandbox Code Playgroud)
3.在Android Studio设置中关闭Instant Run
4.重新启动Android Studio和计算机.
5. 清除并重建项目.
6. 文件 >使高速缓存/重新启动无效.
7. 编译'com.android.support:multidex:1.0.1' [编辑]
最后重启我的生活,但没有想要的工作..
可以做些什么来解决这个问题?
这是我的Gradle文件
buildscript {
repositories {
mavenCentral()
maven { url 'https://maven.fabric.io/public' }
}
dependencies {
classpath 'io.fabric.tools:gradle:1.+'
}
}
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
apply plugin: 'realm-android'
android { …Run Code Online (Sandbox Code Playgroud) java android android-studio android-gradle-plugin android-multidex
我希望从任何从事过霍尼韦尔 Dolphin 设备的人那里得到一些帮助。我正在为多设备开发 Android 条码/二维码扫描应用程序,主要设备是 Dolphin 设备。(例如海豚 70e 黑色)
但是为了获得在所有手机之间完全兼容的应用程序,我想以编程方式检测运行应用程序的设备是否具有带有 android sdk 的激光扫描仪,否则该应用程序使用设备上的相机进行扫描。
我的问题是我没有在网络和霍尼韦尔的文档上找到帮助。
如果有人可以帮助我,那将非常酷!