2015-12-04 49 views
1

我有2个活动,1个主要是空白活动,第二个是Map活动。我正在尝试在第二个活动(地图活动)的顶部导航栏上设置一个后退按钮,以便能够转到主活动。调用操作栏导致错误

我运行以下代码时出现异常。看到类似的问题,但他们是空白的活动,而不是地图活动。此外,建议是要改变我从中延伸出来的班级。考虑到混淆了地图活动的默认代码实现,我不明白这是如何工作的。请指教。

错误消息和我的代码如下。我使用Holo Light作为主题。

例外:

尝试上的空对象引用

代码地图活动调用虚拟方法 '无效 android.app.ActionBar.setDisplayHomeAsUpEnabled(布尔值)'

import android.app.ActionBar; 
import android.content.Intent; 
import android.support.v4.app.FragmentActivity; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.MenuItem; 

import com.google.android.gms.maps.CameraUpdateFactory; 
import com.google.android.gms.maps.GoogleMap; 
import com.google.android.gms.maps.OnMapReadyCallback; 
import com.google.android.gms.maps.SupportMapFragment; 
import com.google.android.gms.maps.model.LatLng; 
import com.google.android.gms.maps.model.MarkerOptions; 

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback { 

    private GoogleMap mMap; 

    @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); 

     //ERROR message occurring on these line 
     ActionBar actionBar = getActionBar(); 
     actionBar.setDisplayHomeAsUpEnabled(true); 
    } 
} 

Manifest - 应用MapActivity的父名称

<activity 
    android:name=".MapsActivity" 
    android:parentActivityName=".MainActivity" 
    android:label="@string/title_activity_maps"></activity> 
+0

你有没有为activity/app设置nonactiobar主题? – Raghunandan

+0

@Raghunandan不,我正在使用Holo.Light.DarkActionBar – kar

回答

2

从FragmentActivity文档

http://developer.android.com/reference/android/support/v4/app/FragmentActivity.html

注意:如果你想实现一个包括动作栏中选择一个活动,您应改用ActionBarActivity类,这是一个子类这个可以让你在API级别7和更高级别上使用Fragment API。

此外,由于您使用的是支持库应该是

ActionBar actionBar = getSupportActionBar(); 
+0

ActionBar actionBar = getSupportActionBar();作为不兼容的类型返回并转换输出相同的错误。 – kar

+0

您可以尝试从AppCompatActivity扩展而不是FragmentActivity – g90

+0

我现在正在从AppCompatActivity进行扩展。说不相容。必需的Android.app.ActionBar。找到android.support.v7.app.ActionBar – kar

2

所以,动作条是老样子。您可以在您的活动中设置工具栏,该工具栏易于使用和自定义。

toolbar_xml.xml

<android.support.v7.widget.toolbar 
     android: layout_width="match_parent" 
     android: layout_height="78dp" 
     android: id="@+I'd/mtoolbar /> 

而且在地图活动申报

Toolbar mtoolbar =  (Toolbar)findviewbyid(R.id.mtoolbar); 
setsupportactionbar(mtoolbar); 
getSupportActionBar().setHomeAsUpEnabled(true); 

<include layout="@layout/toolbar_xml.xml /> in your main layout. 

对不起,如果有我写它从移动任何错误,如果有任何问题发表评论。