我有一个带按钮的Activity1。
单击此按钮时,我想调用Activity2:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<LinearLayout
android:orientation="vertical"
android:id="@+id/frag_container"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</RelativeLayout >
并在此内部&#34; frag_container&#34;我想添加一个Fragment1:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:src="@drawable/ic_launcher"
android:scaleType="fitCenter"
android:layout_height="250px"
android:layout_width="250px"/>
<TextView
android:text="Frame Demo"
android:textSize="30px"
android:textStyle="bold"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:gravity="center"/>
</FrameLayout>
我可以成功启动Activity2:
Intent intent = new Intent(Activity1.this, Activity2.class);
startActivity(intent);
但我不知道如何使用Fragment1启动此Activity2。
我尝试在Activity2的OnCreate中添加它:
Fragment myFrag = new Fragment1 ();
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.add(R.id.frag_container, myFrag);
ft.commit();
但是当我调用此活动时总是崩溃。
我是Android上的新手,有人可以告诉我该怎么办?
答案 0 :(得分:0)
您是否在Fragment中看到名为<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="footer">
<div class="contactformbox form-body">
<div class="sectionbar">Contact Us</div>
abc 123
</div>
</div>
的界面。这是这个问题的根本原因。它没有任何问题,但你最好了解那里发生的事情。
在片段中,您还应该覆盖OnFragmentInteractionListener
方法
onAttach
我们也做了类似下面的事情,
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
this.activity = activity;
}
要确保接口已实现(我认为您的代码中包含上述代码。)如果没有与Fragment中的Activity进行通信,请注释掉@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
this.activity = activity;
// This makes sure that the container activity has implemented
// the callback interface. If not, it throws an exception
try {
mCallback = (OnHeadlineSelectedListener) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString()
+ " must implement OnHeadlineSelectedListener");
}
}
方法。
在这种情况下,您必须在Activity2上实现onAttach
。然后它应该工作。我们使用此接口为Fragment与Activity进行通信。这就是我们这样做的方式。
如果你通过覆盖Fragment中的OnFragmentInteractionListener
来附加活动,那意味着你必须实现接口(但除非你调用那些接口方法从Fragment回调Activity,否则无关紧要)
请查看this以了解有关碎片与活动之间沟通的更多信息。
答案 1 :(得分:-1)
使用get活动获取父活动,然后照常执行。
Intent intent = new Intent(getActivity(), Activity2.class);
getActivity().startActivity(intent);