Java NullPointerException-Android谷歌地图街景
我试图在片段中显示街景Java NullPointerException-Android谷歌地图街景,java,android,google-maps,nullpointerexception,google-street-view,Java,Android,Google Maps,Nullpointerexception,Google Street View,我试图在片段中显示街景 public class StreetDisplay extends Fragment implements OnStreetViewPanoramaReadyCallback{ SupportStreetViewPanoramaFragment streetFrag; static final LatLng PosOne = new LatLng(43.771925, -79.512460); @Override public View onCreateView(
public class StreetDisplay extends Fragment implements OnStreetViewPanoramaReadyCallback{
SupportStreetViewPanoramaFragment streetFrag;
static final LatLng PosOne = new LatLng(43.771925, -79.512460);
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.street_display, container, false);
initialize();
return v;
}
private void initialize() {
streetFrag =
(SupportStreetViewPanoramaFragment) getFragmentManager()
.findFragmentById(R.id.street);
streetFrag.getStreetViewPanoramaAsync(this);
}
//this method is needed for using a ViewPager swiping feature
public static StreetDisplay newInstance(){
StreetDisplay sd = new StreetDisplay();
return sd;
}
@Override
public void onStreetViewPanoramaReady(StreetViewPanorama panorama) {
panorama.setPosition(PosOne);
}
}
这是我运行应用程序时收到的错误消息
Process: com.example.nikhilbhaskar.mapplayground, PID: 22406
java.lang.NullPointerException
at com.example.nikhilbhaskar.mapplayground.StreetDisplay.initialize(StreetDisplay.java:43)
at com.example.nikhilbhaskar.mapplayground.StreetDisplay.onCreateView(StreetDisplay.java:33)
第33行是
initialize();
第43行是
streetFrag.getStreetViewPanoramaAsync(this);
我不确定问题出在哪里-你能帮忙吗
streetFrag =
(SupportStreetViewPanoramaFragment) getFragmentManager()
.findFragmentById(R.id.street);
此语句可能不是为StreetFrag创建对象
检查is streetFrag是否为空。我尝试了官方的文档,它工作得很好 我的示例代码: 街景活动
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import com.google.android.gms.maps.OnStreetViewPanoramaReadyCallback;
import com.google.android.gms.maps.StreetViewPanorama;
import com.google.android.gms.maps.StreetViewPanoramaFragment;
import com.google.android.gms.maps.model.LatLng;
public class StreetViewActivity extends FragmentActivity
implements OnStreetViewPanoramaReadyCallback {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_street_view);
StreetViewPanoramaFragment streetViewPanoramaFragment =
(StreetViewPanoramaFragment) getFragmentManager()
.findFragmentById(R.id.streetviewpanorama);
streetViewPanoramaFragment.getStreetViewPanoramaAsync(this);
}
@Override
public void onStreetViewPanoramaReady(StreetViewPanorama streetViewPanorama) {
streetViewPanorama.setPosition(new LatLng(-33.87365, 151.20689));
}
}
对于活动\u street\u view.xml
:
<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:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="com.bjiang.map_ex.StreetViewActivity">
<fragment
android:name="com.google.android.gms.maps.StreetViewPanoramaFragment"
android:id="@+id/streetviewpanorama"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</RelativeLayout>
在片段中使用
getChildFragmentManager()
streetFrag = (SupportStreetViewPanoramaFragment) getChildFragmentManager()
.findFragmentById(R.id.street);
我刚才查过了。你是对的。streetFrag为null,该语句不创建对象。知道为什么/如何修复它吗?这可能会有所帮助。看看这个。你使用
片段的支持库吗?你的意思是?导入android.support.v4.app.Fragment;是的,这是我从尝试更改为:getFragmentManager()
扩展的片段类:getSupportFragmentManager()
,但是getSupportFragmentManager()是FragmentActivity类的一个方法。我不能扩展这个类;我需要片段类,因为我在ViewPager中使用这些片段制作屏幕滑动动画,您可以使用:getActivity().getSupportFragmentManager()代码>碧江,我也试过了,它对我非常有效。但我的例子略有不同。我的类扩展了Fragment not FragmentActivity,因为此片段在ViewPager中(与其他两个片段一起)用于ViewPager中的水平滑动/屏幕幻灯片功能。这里的例子:我尝试了一个小时,但没有运气,我发布了我在编辑中尝试过的最好的代码,也是我能找到的最好的代码…谢谢碧江,我将查看该链接-我感谢你的帮助:)
streetFrag = (SupportStreetViewPanoramaFragment) getChildFragmentManager()
.findFragmentById(R.id.street);