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")
}