我是 Android 編程新手,在嘗試從活動和另一個活動傳遞字串時遇到問題。我已經在清單檔案中添加了所需的代碼。我想從 MainActivity 中的用戶輸入中獲取“myName”并將其傳遞給 activity_matching,但在第二個檔案中,變數始終為空。我不明白我做錯了什么,所以我在這里。
package com.ium.example.packageName;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends AppCompatActivity{
String myName;
EditText edit;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getSupportActionBar().hide();
setContentView(R.layout.activity_main);
edit = findViewById(R.id.nickName);
myName = edit.getText().toString();
Button loginButton = findViewById(R.id.button);
loginButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent(MainActivity.this, activity_matching.class);
i.putExtra("myName", myName);
startActivity(i);
}
});
}
}
上面的代碼與“MainActivity”相關,下面的代碼與“activity_matching”相關
package com.ium.example.packageName;
import android.content.Intent;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.Window;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import com.google.android.material.snackbar.Snackbar;
import java.util.Random;
public class activity_matching extends AppCompatActivity {
float x1,x2,y1,y2;
int s;
String[] names = new String[17];
public String myName;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getSupportActionBar().hide();
setContentView(R.layout.activity_matching);
}
public boolean onTouchEvent(MotionEvent touchEvent){
switch(touchEvent.getAction()) {
case MotionEvent.ACTION_DOWN:
x1 = touchEvent.getX();
y1 = touchEvent.getY();
break;
case MotionEvent.ACTION_UP:
x2 = touchEvent.getX();
y2 = touchEvent.getY();
Intent i = new Intent(activity_matching.this, SwipeLeft.class);
i.putExtra("num", s);
i.putExtra("arr", names);
startActivity(i);
break;
}
return false;
}
public void onBtnClick(View v) {
TextView txtHello = findViewById(R.id.txtMessage);
Intent b = getIntent();
myName = b.getStringExtra("myName");
String swipeLeft = "Swipe (a destra o sinistra) per l'argomento di discussione";
Snackbar doSwipe = Snackbar.make(v, swipeLeft, 6000);
Random rand = new Random(System.currentTimeMillis());
names = new String[]{"Name1", "Name2", "Name3", "Name4", "Name5", "Name6", "Name7", "Name8",
"Name9", "Name10", "Name11", "Name12", "Name13", "Name14", "Name15",
"Name16", "Name17"};
re:
{
s = rand.nextInt(names.length);
if (myName.equals(names[s]))
break re;
txtHello.setText(myName " vai a parlare con " names[s] "!");
doSwipe.show();
}
}
}
感謝所有會回答的人:3 祝您有美好的一天^-^
uj5u.com熱心網友回復:
嘗試在 onCreate 方法中獲取意圖的額外資料可能會有所幫助。我不確定這是否會有所幫助,但我在復制您的問題時遇到了麻煩。
uj5u.com熱心網友回復:
在 MainActivity 中,您在單擊 loginButton 之前分配 myName。那時您的 EditText 仍然是空的。移動:
myName = edit.getText().toString();
在此行上方單擊
i.putExtra("myName", myName);
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/320796.html
