我是Android和Java的新手,我試圖開發一個需要多個活動的應用程序。如何從AndroidStudio上的多個活動傳輸數據?
第一個活動是主菜單,第二個是鬧鐘,第三個是設置。
問題是我想從第一個開始第二個活動,但我想檢查密碼以停止第三個的警報。
我檢查了很多教程,看來我需要將第三個活動中的數據發送到第二個,但是當我在第一個創建第二個時,我不知道如何獲取「意向」對象發送數據,如果我使用相同的引用創建另一個,它會崩潰。
我已經嘗試從第一個到第三個活動發送第二個intend,但我不知道如何接收它,因爲它既不是String,Int ...也不能做「bundle.getString」。
正如你可能看到我有點困惑,它可能比我想象的更容易。我會感謝你的回答。
第一個活動(主):
package com.example.robert.savemob;
import android.support.v7.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
public class Main extends AppCompatActivity {
Intent i1;
Intent i2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
i1 = new Intent(this, Alarma.class);
i2 = new Intent(this, Opciones.class);
}
public void Alarm(View view) {
startActivity(i1);
}
public void Settings(View view) {
startActivity(i2);
}
}
次活動(Alarma)
package com.example.robert.savemob;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
public class Alarma extends AppCompatActivity {
private EditText et1;
String clavecorrecta;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_alarma);
et1=(EditText)findViewById(R.id.et1);
Bundle bundle = getIntent().getExtras();
clavecorrecta = bundle.getString("clavecorrecta");
}
public void Parar(View v) {
String clave=et1.getText().toString();
if (clave.length()==0) {
Toast notificacion= Toast.makeText(this,"Introduce la clave", Toast.LENGTH_LONG);
notificacion.show();
}
else if (clave.equals(clavecorrecta)) {
finish();
}
else {
Toast notificacion= Toast.makeText(this,"Clave incorrecta", Toast.LENGTH_LONG);
notificacion.show();
}
}
}
第三個活動(Opciones)
package com.example.robert.savemob;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.EditText;
public class Opciones extends AppCompatActivity {
private EditText et2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.opciones);
et2=(EditText)findViewById(R.id.et2);
i1.putExtra("clavecorrecta", et2.getText().toString()); //I want to send it but can't acces to that i1
}
}