我有一个列表视图,其中包含位置坐标(纬度,经度),并且我正尝试将其传递给地图活动以在地图上显示
这是在android studio和Kotlin上
listView.setOnItemClickListener { parent, view, position, id ->
val time = usersList.get(position).time
val long:String = usersList.get(position).long
val late :String = usersList.get(position).late
startActivity(Intent(this, MapsActivity2::class.java).putExtra("long",long).putExtra("late",late))
}
class MapsActivity2 : AppCompatActivity(), OnMapReadyCallback {
private lateinit var mMap: GoogleMap
var long:String = intent.getStringExtra("long")
var late:String = intent.getStringExtra("late")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_maps2)
// Obtain the SupportMapFragment and get notified when the map is ready to be used.
val mapFragment = supportFragmentManager
.findFragmentById(R.id.map) as SupportMapFragment
mapFragment.getMapAsync(this)
}
override fun onMapReady(googleMap: GoogleMap) {
mMap = googleMap
// Add a marker in Sydney and move the camera
val sydney = LatLng(long.toDouble(), late.toDouble())
mMap.addMarker(MarkerOptions().position(sydney).title("jh"))
mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney))
}
}
进程:com.example.firebase,PID:32463 java.lang.RuntimeException:无法实例化活动ComponentInfo {com.example.firebase / com.example.firebase.MapsActivity2}:java.lang.NullPointerException:尝试调用虚拟方法'java.lang.String android.content.Intent。 getStringExtra(java.lang.String)'上的空对象引用 在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3289) 在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3548) 在android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:86) 在android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) 在android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) 在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:2155) 在android.os.Handler.dispatchMessage(Handler.java:109) 在android.os.Looper.loop(Looper.java:207) 在android.app.ActivityThread.main(ActivityThread.java:7539) 在java.lang.reflect.Method.invoke(本机方法) 在com.android.internal.os.RuntimeInit $ MethodAndArgsCaller.run(RuntimeInit.java:524) 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:958) 原因:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法'java.lang.String android.content.Intent.getStringExtra(java.lang.String)' 在com.example.firebase.MapsActivity2。(MapsActivity2.kt:19) 在java.lang.Class.newInstance(本地方法) 在android.app.AppComponentFactory.instantiateActivity(AppComponentFactory.java:69) 在android.support.v4.app.CoreComponentFactory.instantiateActivity(CoreComponentFactory.java:43) 在android.app.Instrumentation.newActivity(Instrumentation.java:1224) 在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3274)
答案 0 :(得分:0)
var long:String = intent.getStringExtra("long")
var late:String = intent.getStringExtra("late")
以上代码应位于onCreate();
答案 1 :(得分:0)
无法在intent
之前获得onCreate
,因此请尝试将其放入onCreate
中。这是因为Intent在final void attach(.....)
lateinit var longStr : String
lateinit var late : String
override onCreate(....) {
longStr = intent.getStringExtra("long")
late = intent.getStringExtra("late")
}
答案 2 :(得分:0)
include code inside onCreate() also check if it contain the extra
oncreate(){
if(getIntent.hasExtra("long")){
var long:String = intent.getStringExtra("long")
}
if(getIntent.hasExtra("late")){
var late:String = intent.getStringExtra("late")
}
}
答案 3 :(得分:0)
您可以在onCreate()之后获得意图价值,如下所示: 我还建议避免像long这样的预定义关键字,因为long被定义为数据类型
var long:String = intent.getStringExtra("long")
var late:String = intent.getStringExtra("late")