I'm making an Android app which in the MainActivity
user select an Item in a ListView
and a MapsActivity
comes up. I want a Back Button in title bar for going back to MainActivity
.
I have tried some solutions which are here, like:
Android - Back button in the title bar and
Display back button on action bar and
They are no suitable for me, cause I'm using a MapsActivity
.
I guess there should be another way for doing this for MapsAvtivity
.
here is my code:
manifest file:
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/Theme.AppCompat.Light.NoActionBar" >
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="@string/google_maps_key"
/>
<activity
android:name=".MapsActivity"
android:label="@string/title_activity_maps"
android:parentActivityName=".MainActivity" >
<!-- Parent activity meta-data to support 4.0 and lower -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.shmj.monmemorableplaces.MainActivity" />
</activity>
</application>
MapsActivity.java:
public class MapsActivity extends AppCompatActivity implements OnMapReadyCallback {
private GoogleMap mMap;
SupportMapFragment mapFragment;
Intent mainIntent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
mainIntent = new Intent(getApplicationContext(), MainActivity.class);
ActionBar actionBar = getActionBar();
getActionBar().setHomeButtonEnabled(true);
getActionBar().setDisplayHomeAsUpEnabled(true);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
mainIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(mainIntent);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
}
and logcat:
04-25 14:32:41.376 9010-9010/com.shmj.monmemorableplaces E/AndroidRuntime: FATAL EXCEPTION: main Process: com.shmj.monmemorableplaces, PID: 9010 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.shmj.monmemorableplaces/com.shmj.monmemorableplaces.MapsActivity}:java.lang.NullPointerException: Attempt to invoke virtual method 'void android.app.ActionBar.setHomeButtonEnabled(boolean)' on a null object reference at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3124) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3233) at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:5120) at android.app.ActivityThread.access$1100(ActivityThread.java:197) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1662) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:145) at android.app.ActivityThread.main(ActivityThread.java:6856) 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:1404) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199) Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.app.ActionBar.setHomeButtonEnabled(boolean)' on a null object reference at com.shmj.monmemorableplaces.MapsActivity$override.onCreate(MapsActivity.java:58) at com.shmj.monmemorableplaces.MapsActivity$override.access$dispatch(MapsActivity.java) at com.shmj.monmemorableplaces.MapsActivity.onCreate(MapsActivity.java:0) at android.app.Activity.performCreate(Activity.java:6550) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1120) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3077) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3233) at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:5120) at android.app.ActivityThread.access$1100(ActivityThread.java:197) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1662) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:145) at android.app.ActivityThread.main(ActivityThread.java:6856) 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:1404) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)