[英]Getter returning null in different class
在制作 Android 應用程序時,我遇到了以下問題:
我的 MainActivity 看起來像這樣:
...
private String token;
@Override
protected void onCreate(Bundle savedInstanceState) {
...
tokenSetter();
}
private void tokenSetter() {
FirebaseInstanceId.getInstance().getInstanceId()
.addOnCompleteListener(task -> {
if (!task.isSuccessful()) {
Log.w("TRAZENITOKEN", "getInstanceId failed", task.getException());
return;
}
// Get new Instance ID token
String token = Objects.requireNonNull(task.getResult()).getToken();
setToken(token);
Log.d("TRAZENITOKEN", "onGetToken: " + token);
// Log and toast
// Log.d("TRAZENITOKEN", "onComplete: " + token);
});
}
public String getToken() {
return token;
}
public void setToken(String token) {
this.token = token;
}
我知道令牌值是在這個 MainActivity 類中的另一個方法中設置的,當我調用 getToken() 時,我得到了該值。
但是,當我嘗試從另一個活動調用 getToken 時,如下所示:
...
button.setOnClickListener(view -> {
FirebaseActions firebaseActions = new FirebaseActions();
MainActivity mainActivity = new MainActivity();
//firebaseActions.setUserNameOnToken(editText.getText().toString());
if(mainActivity.getToken() != null) editText.setText(mainActivity.getToken());
else editText.setText("Skafiskafnjak");
});
(出於調試目的,我選擇了 editText.setText 方法,我將以注釋的方式使用它)上面的代碼片段總是轉到 else 部分,因為 getToken 為空。 如果它在它自己的類中返回一個值,為什么它在這個類中返回 null? 可能是因為我做了 MainActivity mainActivity = new MainActivity();
一個答案將不勝感激。 提前致謝!
創建新活動會導致該活動的新實例,因此新令牌將為空
通過意圖將令牌作為來自 MainActivity 的字符串數據發送,然后從第二個 Activity 獲取該字符串數據(令牌),並隨心所欲地使用它。
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
intent.putExtra("token", yourTokenValue);
startActivity(intent);
在你的 SecondActivity 的 onCreate 方法中,你可以使用 getIntent().getStringExtra("token"); 檢索從第一個活動傳遞的令牌值
String token= getIntent().getStringExtra("token");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.