从片段开始活动

时间:2016-03-15 11:49:21

标签: android android-fragments android-annotations start-activity

我试图开始一个在MaterielDialog中的活动,而这个活动是在片段中。

这是我的片段部分:

Intent i = new Intent(getActivity(), SubjectViewActivity_.class);
i.putExtra("subject", projects.getFileurl());
startActivity(i);

在SubjectViewActivity中:

@UiThread
void setSubject(String LinkTo) {
    Toast.makeText(getApplicationContext(), LinkTo, Toast.LENGTH_LONG).show();
    webview.getSettings().setJavaScriptEnabled(true);
    webview.loadUrl(LinkTo);
    setContentView(webview);
}

@AfterViews
void init() {
    Intent intent = getIntent();
    String url = intent.getExtras().getString("subject");
    setSubject(url);
}

我收到此错误:

  

引起:java.lang.IllegalStateException:指定的子节点已经有父节点。您必须先在孩子的父母身上调用removeView()。

我正在使用android注释。我已经在堆栈上尝试了很多问题,但没有人工作。

先谢谢

2 个答案:

答案 0 :(得分:1)

使用回调。在片段中实现一个接口:

public interface OnChangeActivityListener{
    void changeActivity()
}

然后在您的活动中实现界面。在changeActivity()方法中实现您创建新意图。意图和活动管理应该在活动级别进行,而不是在碎片级别进行。

更多信息: http://developer.android.com/training/basics/fragments/communicating.html

答案 1 :(得分:0)

您是否在void setSubject(String LinkTo)调用中的setContentView之前设置了内容视图?如果你这样做,你不需要再次设置它。

看起来您已经在Activity的布局中拥有了webview。