我对Android很陌生,并且已经通过在线视频的一些帮助自己学习。我试图使用两个活动来使用操作栏来回。第一个活动只是主要活动,第二个活动是地图活动。当我按下按钮从第一个活动转到第二个活动时,当通过模拟器运行时崩溃。
这是我的代码 -
主要活动
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//declare list view
ListView listView = (ListView) findViewById(R.id.listView);
//create array list called places using strings
final ArrayList<String> places = new ArrayList<>();
places.add("Add a new location");
//create array adapter
ArrayAdapter arrayAdapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1,places);
//set up list view to use array adapter
listView.setAdapter(arrayAdapter);
[![listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {][1]][1]
Intent i = new Intent(getApplicationContext(), MapsActivity.class);
i.putExtra("locationInfo",position);
//start activity with intent of i
startActivity(i);
}
});
}
地图活动 -
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
// Obtain the SupportMapFragment and get notified when the map is ready to be used.
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
ActionBar actionBar = getActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
Intent i = getIntent();
Log.i("LocationInfo", Integer.toString(i.getIntExtra("locationInfo", -1)));
}
似乎在线上崩溃 - actionBar.setDisplayHomeAsUpEnables(true);
我已导入操作栏库并更改了模拟器上的API级别,以查看是否存在问题。但是,由于我对Android的经验有限,我对此问题有所了解。
关于如何纠正问题的任何想法都会很棒。
Log Cat -
主要活动的XML
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.lennydegriffa.memorableplaces.MainActivity">
<ListView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/listView"
android:layout_alignParentTop="true"
android:layout_alignParentStart="true" />
</RelativeLayout>
地图活动的XML
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:map="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.lennydegriffa.memorableplaces.MapsActivity" />
答案 0 :(得分:0)
请在地图活动中使用ActionBarActivity or AppCompatActivity class instead of FragmentActivity
来设置操作栏。我的建议是AppCompatActivity
。
背后的原因是 -
如果您查看ActionBarActivity或AppCompatActivity,那么它们会实现ActionBarDrawerToggle.DelegateProvider,而FragmentActivity则不会实现它。
为什么我建议AppCompatActivity
因为ActionBarActivity
已弃用。
如果您使用支持v4库操作栏,那么我建议使用getSupportActionBar()
代替getActionBar()
答案 1 :(得分:0)
只需检查你的style.xml,因为它可能是你已经完成的
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
更改为
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">