我一直在Stack Overflow上寻找类似的问题,但没有运气。我有我的第一个活动,MapsActivity。我希望我的第二个活动AboutActivity出现在MapsActivity布局的FrameLayout中,所以我使用了LayoutInflater。当我运行应用程序时,我会看到我的AboutActivity大约半秒钟,然后它会快速更改回MapActivity。我在logcat上没有任何错误,并且Manifest文件中列出了这两个活动。
这是我的MapsActivity(仅包含相关部分)。我的谷歌地图在片段内(我希望我的第二个活动出现在那里)。我有一个菜单按钮,其中一个按钮指向第二个活动。:
let chart = Chart(frame: CGRect(x: 0, y: 0, width: self.popUpView.bounds.size.width, height: self.popUpView.bounds.size.height / 2))
这是我的AboutActivity,第二项活动。 activity_about仅显示一秒钟。我希望它出现在地图的位置。
public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {
private String[] menuOptions;
private DrawerLayout myDrawerLayout;
private ListView myList;
// private Fragment menuFragment;
private MapFragment mMapFragment;
private GoogleMap mMap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
if (findViewById(R.id.content_frame)!=null){
if (savedInstanceState!=null){
return;
}
// to add fragment dynamically, create new instance- add to frame layout
mMapFragment= MapFragment.newInstance();
FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
fragmentTransaction.add(R.id.content_frame, mMapFragment);
fragmentTransaction.commit();
//make menu from array indices
menuOptions = getResources().getStringArray(R.array.menu_array);
myDrawerLayout = (DrawerLayout)findViewById(R.id.drawer_layout);
myList= (ListView)findViewById(R.id.left_drawer);
//adapter for list view
myList.setAdapter(new ArrayAdapter<String>(this, R.layout.drawer_list_item, menuOptions));
//list's click listener
myList.setOnItemClickListener(new DrawerItemClickListener());
Button menuButton = (Button) findViewById(R.id.menuButton);
menuButton.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
myDrawerLayout.openDrawer(Gravity.LEFT);
}
});
...
private void selectItem(int position){
switch(position) {
case 0:
//Highlight selected item
myList.setItemChecked(position, true);
myDrawerLayout.closeDrawer(myList);
break;
case 1:
//about
Intent switchIntent = new Intent(getApplicationContext(), AboutActivity.class);
startActivity(switchIntent);
break;
这是我的activity_maps.xml,它有一个地图和一个FrameLayout,我希望我的其他活动出现(这样我也可以在每个活动中都有ListView菜单):
public class AboutActivity extends MapsActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.activity_about);
FrameLayout frame = (FrameLayout) findViewById(R.id.content_frame);
getLayoutInflater().inflate(R.layout.activity_about, frame);
}
答案 0 :(得分:0)
公共类AboutActivity扩展 FragmentActivity ,并尝试使用片段。
&#34; main&#34;布局创建一个:
<FrameLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<Button
android:id="@+id/menuButton"
android:layout_width="100dp"
android:layout_height="50dp"
android:text="Menu" />
</FrameLayout>
mainActivity中的会将创建的片段膨胀到frameLayout。
答案 1 :(得分:0)
如果您希望在这两项活动中使用Button
和ListView
,为什么不使用AboutFragment
代替AboutActivity
。当您在ListView中单击aboutButton时,只需替换FrameLayout
中的片段显示。您必须在FrameLayout之外让您menuButton
。
<强> activity_xml 强>
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- The main content view -->
<LinearLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<FrameLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_weight="1"
android:layout_height="0dp" />
<Button
android:id="@+id/menuButton"
android:layout_width="100dp"
android:layout_height="50dp"
android:text="Menu" />
</LinearLayout>
<!-- The navigation drawer -->
<ListView android:id="@+id/left_drawer"
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:choiceMode="singleChoice"
android:divider="@android:color/transparent"
android:dividerHeight="0dp"
android:background="#111">
</ListView>
</android.support.v4.widget.DrawerLayout>