我正在尝试开发一个"动态"Android应用程序.
动态,我在清单中列出了一个在运行时"构建"的活动.
我可以很好地构建所需的活动,但是,当我尝试启动它时,我的应用程序失败了......
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.research.ps/com.research.Dynamic}: java.lang.ClassNotFoundException:
Didn't find class "com.research.Dynamic" on path: DexPathList[[zip file "/data/app/com.research.ps-1/base.apk"],nativeLibraryDirectories=[/data/app/com.research.ps-1/lib/arm,
/data/app/com.research.ps-1/base.apk!/lib/armeabi-v7a, /vendor/lib, /system/lib]]
Run Code Online (Sandbox Code Playgroud)
有没有一种方法可以在运行时成功实例化Android Activity?
有没有办法在我的应用程序路径中添加"临时"或"shell"活动?然后用我的动态实例替换"临时"活动?
UPDATE
My Manifest XML包含此条目
<activity
android:name=".Dynamic"
android:label="@string/title_activity_dynamic"
android:theme="@style/AppTheme.NoActionBar" />
Run Code Online (Sandbox Code Playgroud)
但是,我的应用程序中没有包含名为"Dynamic"的Activity.
我正在使用ByteBuddy构建我的动态活动: -
final Class<? extends android.support.v7.app.AppCompatActivity> dynamicType = new ByteBuddy(ClassFileVersion.JAVA_V8)
.subclass(android.support.v7.app.AppCompatActivity.class, IMITATE_SUPER_CLASS)
.name("com.research.Dynamic")
.make()
.load(getClass().getClassLoader(), new AndroidClassLoadingStrategy.Wrapping(this.getDir("dexgen", Context.MODE_PRIVATE)))
.getLoaded();
final Intent intent = new Intent(this, dynamicType);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud) 当我在带有API 21的手机上的改装API中使用Observable时出现此错误:
java.lang.NoClassDefFoundError: io.reactivex.Observable
Run Code Online (Sandbox Code Playgroud)
但是在使用API 19的电话或使用API 23的模拟器上它可以工作.
这是我的API接口:
import io.reactivex.Observable;
import retrofit2.Response;
import retrofit2.http.Body;
import retrofit2.http.POST;
public interface ApiService {
/**
* Created by Mohsen on 5/10/2017.
*
*/
@POST("/cp/api/")
Observable<Response<Integer>> Get_BuyBox_Count(@Body Object request);
}
Run Code Online (Sandbox Code Playgroud)
这是我的改造设置:
@Provides
@Application_Scope
@Store_Retrofit_Qualifier
public Retrofit Store_retrofit(OkHttpClient client) {
return new Retrofit.Builder()
.baseUrl(Urls.Sotre_Base_Url)
.client(client)
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.addConverterFactory(JSONConverterFactory.create())
.addConverterFactory(GsonConverterFactory.create())
.build();
}
Run Code Online (Sandbox Code Playgroud)
我的依赖:
compile 'com.squareup.retrofit2:retrofit:2.2.0'
compile 'com.squareup.retrofit2:converter-gson:2.1.0'
compile 'io.reactivex.rxjava2:rxjava:2.0.1'
compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
compile 'com.jakewharton.retrofit:retrofit2-rxjava2-adapter:1.0.0'
Run Code Online (Sandbox Code Playgroud) 我无法运行“Fastlane 版本”,因为它显示错误“无法解密存储库,请确保输入正确的密码!”。我确信输入的密码是正确的。我尝试手动删除所有配置文件和证书,但没有成功。
[13:03:58]: Enter the passphrase that should be used to encrypt/decrypt your certificates
[13:03:58]: This passphrase is specific per repository and will be stored in your local keychain
[13:03:58]: Make sure to remember the password, as you'll need it when you run match on a different machine
[13:03:58]: Passphrase for Match storage: ********
[13:04:10]: Type passphrase again: ********
[13:04:16]: wrong final block length
[13:04:16]: Couldn't decrypt the repo, please make sure you enter the right password!
keychain: "/Users/mohsen/Library/Keychains/login.keychain-db"
version: …Run Code Online (Sandbox Code Playgroud) 我有一个recyclerview和一个imageview,我想在滚动上更改imageview图像,但我不知道如何获取当前位置,然后从列表中获取我的图像然后将其加载到Picasso到imageview!
这是我的代码:
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/main_background"
android:background="#80000000"
android:scaleType="centerCrop"
/>
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="400dp"
android:layout_centerInParent="true"
android:layout_marginBottom="30dp"
android:layout_marginTop="30dp"/>
Run Code Online (Sandbox Code Playgroud)
我的适配器:
public class Place_Adapter extends RecyclerView.Adapter<Place_View_Holder> {
private List<Place> objects;
private Activity context;
public Place_Adapter(List<Place> objects,Activity context){
this.context=context;
this.objects=objects;
}
@Override
public Place_View_Holder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.place_item, parent, false);
Place_View_Holder place_view_holder=new Place_View_Holder(v);
return place_view_holder;
}
@Override
public void onBindViewHolder(Place_View_Holder holder, int position) {
Picasso.with(context)
.load(objects.get(position).getItem_Image())
.placeholder(R.mipmap.image)
.error(R.mipmap.image)
.into(holder.image);
holder.place_name.setText(objects.get(position).getPName());
holder.place_in_map.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
context.startActivity(new …Run Code Online (Sandbox Code Playgroud)