Эй, я хочу создать и показать framelayouts в моей андроидной аппликации без xml-макета. Для этого я работаю с Rect и Fragments. Он отлично работает, если все в MainActivity, но если я попытаюсь выполнить в дополнительном классе, я получаю, что операция «Ошибка» была уничтожена.Что означает, что в моем приложении андроид-фрагмента была уничтожена ошибка?
Я хочу создать прямоугольник и внутри этого я хочу загрузить просмотрщик PDF как фрагмент.
Вот мой MainActiticy без нагрузки XML Layout:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MainActivity.thisContext = this;
MainActivity.thisActivity = (Activity) this;
final PSPDFConfiguration configuration = new PSPDFConfiguration.Builder(BuildConfig.PSPDFKIT_LICENSE_KEY).build();
final Uri documentUri = Uri.parse("file:///android_asset/psp.pdf");
CordovaView viewer = new CordovaView(thisContext,10,10,500,500);
viewer.loadFileInView(thisActivity,thisContext,0,300,configuration,documentUri);
}
CordovaView класса. Здесь необходимо создать представления и загрузить файл внутри.
public class CordovaView extends FragmentActivity {
private List<WebView>views;
public CordovaView(Context ctx,int x,int y,int w, int h){
this.views = new ArrayList<WebView>();
createView(ctx,x,y,w,h);
}
public void createView(Context ctx, int x, int y, int w, int h){
final Rect rect = new Rect(x, y, x + w, y + h);
View view = new WebView(ctx);
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(rect.right - rect.left, rect.bottom - rect.top);
params.leftMargin = rect.left;
params.topMargin = rect.top;
params.gravity = 0;
view.setLayoutParams(params);
view.setBackgroundColor(Color.BLUE);
views.add((WebView) view);
}
public void showViewById(Activity ac, int index){
WebView view = views.get(index);
ac.addContentView(view,view.getLayoutParams());
}
public void loadFileInView(Activity ac, Context ctx, int index, int containerId, final PSPDFConfiguration configuration, Uri documentUri){
FrameLayout layout = new FrameLayout(ctx);
layout.setId(containerId);
WebView view = views.get(index);
layout.setLayoutParams(view.getLayoutParams());
view.addView(layout);
PSPDFFragment fragment = (PSPDFFragment) getSupportFragmentManager().findFragmentById(layout.getId());
//Here I have a error I think :(
if(fragment==null){
fragment = PSPDFFragment.newInstance(documentUri,configuration);
getSupportFragmentManager()
.beginTransaction()
.replace(layout.getId(),fragment)
.commit();
}
showViewById(ac,index);
}
}
Моя ошибка:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: de.wladimir.tarasov.pdfframelayout, PID: 9932
java.lang.RuntimeException: Unable to start activity ComponentInfo{de.wladimir.tarasov.pdfframelayout/de.wladimir.tarasov.pdfframelayout.MainActivity}: java.lang.IllegalStateException: Activity has been destroyed
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2491)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2564)
at android.app.ActivityThread.access$800(ActivityThread.java:170)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1441)
at android.os.Handler.dispatchMessage(Handler.java:111)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5576)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:956)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:751)
Caused by: java.lang.IllegalStateException: Activity has been destroyed
at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1854)
at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:643)
at android.support.v4.app.BackStackRecord.commit(BackStackRecord.java:603)
at de.wladimir.tarasov.pdfframelayout.CordovaView.loadFileInView(CordovaView.java:82)
...
...
[Вы задали тот же вопрос вчера] (http://stackoverflow.com/questions/42273971/how-i-can-fix-the-error-activity-has-been-destroyed-in-my- class-with-getsupp) ... и ** вы получите ответ ** .. ** речь идет о операторе 'new' и' activity' производном классе ** ... пожалуйста, не переставляйте вопрос – Selvin
это не поможет Мне очень нравится. – Tarasov
Я удаляю другой вопрос, потому что я пытаюсь спросить лучше – Tarasov