lateinit 属性 songurl 还没有被初始化,虽然我做了
lateinit property songurl has not been initialized although I did
我有两个活动,第一个有 public String var 调用 songurl 和按钮导致第二个 activity 和第二个 activity 让 mediaplayer 从字符串接收 URL var 在第一个 activity 然后开始播放,但问题是媒体播放器不工作,我得到一个错误
这里是 MainActivity1.kt 或 .java 作为您的语言:-
lateinit var songurl :String
class MainActivity1 : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
songurl = "https//...... My URL"
var btnstart_MainActivity2:Button = findViewById(R.id.btn)
btnstart_MainActivity2.setOnClickListener {
startActivity(Intent(this,Main2Activity::class.java))
}
}
}
这是
主要活动 2:-
class Main2Activity : AppCompatActivity() {
lateinit var mediaplayer: MediaPlayer
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
mediaplayer= MediaPlayer()
mediaplayer.setDataSource(songurl)
mediaplayer.prepare()
mediaplayer.start()
}
}
这里是错误
lateinit property songurl has not been initialized
您的问题是您的 songurl
仅出现在您的第一个 activity 中。 activity 2.
中没有值甚至赋值
考虑将其作为意图的包参数传递:
Activity1:
Bundle bundle= new Bundle();
bundle.putString("key", songurl);
Intent i = new Intent(Activity1.this,Activity2.class);
i.putExtras(bundle);
startActivity(i);
Activity2:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_another_activity);
Bundle p = getIntent().getExtras();
String songurl = p.getString("key");
}
例子在java.
您应该在 android Intent extras 中发送您的 songUrl
。您收到错误的原因是它未在 activity2 中定义,您已在 activity1.
中定义它
发送额外的意图
var intent = Intent(this,Main2Activity::class.java)
intent.putExtra("songurl", songurl)
在其他方面获得额外收入activity
if(getIntent().hasExtra("songurl"){
var songurl = getIntent().getStringExtra("songurl")
}
我有两个活动,第一个有 public String var 调用 songurl 和按钮导致第二个 activity 和第二个 activity 让 mediaplayer 从字符串接收 URL var 在第一个 activity 然后开始播放,但问题是媒体播放器不工作,我得到一个错误
这里是 MainActivity1.kt 或 .java 作为您的语言:-
lateinit var songurl :String
class MainActivity1 : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
songurl = "https//...... My URL"
var btnstart_MainActivity2:Button = findViewById(R.id.btn)
btnstart_MainActivity2.setOnClickListener {
startActivity(Intent(this,Main2Activity::class.java))
}
}
}
这是 主要活动 2:-
class Main2Activity : AppCompatActivity() {
lateinit var mediaplayer: MediaPlayer
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
mediaplayer= MediaPlayer()
mediaplayer.setDataSource(songurl)
mediaplayer.prepare()
mediaplayer.start()
}
}
这里是错误
lateinit property songurl has not been initialized
您的问题是您的 songurl
仅出现在您的第一个 activity 中。 activity 2.
考虑将其作为意图的包参数传递:
Activity1:
Bundle bundle= new Bundle();
bundle.putString("key", songurl);
Intent i = new Intent(Activity1.this,Activity2.class);
i.putExtras(bundle);
startActivity(i);
Activity2:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_another_activity);
Bundle p = getIntent().getExtras();
String songurl = p.getString("key");
}
例子在java.
您应该在 android Intent extras 中发送您的 songUrl
。您收到错误的原因是它未在 activity2 中定义,您已在 activity1.
发送额外的意图
var intent = Intent(this,Main2Activity::class.java)
intent.putExtra("songurl", songurl)
在其他方面获得额外收入activity
if(getIntent().hasExtra("songurl"){
var songurl = getIntent().getStringExtra("songurl")
}