Android 意图不是将变量从一个 class 传递到另一个 class
Android Intent is not passing the variable from one class to another
在 Android Studio 中,我创建了一个名为 name 的简单字段。我想将这个名为 name 的变量传递给名为 MainActivity2 的 class。
我已经为此声明了 Intents 和 Bundle。但是,MainActivity1 class 没有将此变量发送到 MainActivity2。证明是代码:Toast.makeText(getApplication(), "Name:" +name, Toast.LENGTH_LONG).show();
它应该显示:姓名:+姓名
问题是它只出现:“姓名:”
拜托,有人可以帮助我吗?
我的代码是:
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
EditText name; Button nextPage;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
name = findViewById(R.id.namefield);
final String name = name.getText().toString();
nextPage = findViewById(R.id.nextPage);
nextPage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent senderIntent = new Intent(getApplicationContext(), MainActivity2.class);
Bundle bundle = new Bundle();
bundle.putString("name", name);
senderIntent.putExtras(bundle);
startActivity(senderIntent);
Toast.makeText(getApplication(), "Name:" +name, Toast.LENGTH_LONG).show();
}
});
}
}```
将此行移到 setOnClickListener 中:
final String name = name.getText().toString();
.
另外,如果你想检查变量名是否为空,你总是可以使用 name.isEmpty()
.
在 MainActivity 中试试这个:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
name = findViewById(R.id.namefield);
nextPage = findViewById(R.id.nextPage);
nextPage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent senderIntent = new Intent(MainActivity.this, MainActivity2.class);
String strName = name.getText().toString();
senderIntent.putExtra("NAME", strName);
startActivity(senderIntent);
}
});
}
然后在 MainActivity2 中使用这个来获取字符串:
Bundle extra = getIntent().getExtras();
String newString = extra.getString("NAME");
在 Android Studio 中,我创建了一个名为 name 的简单字段。我想将这个名为 name 的变量传递给名为 MainActivity2 的 class。 我已经为此声明了 Intents 和 Bundle。但是,MainActivity1 class 没有将此变量发送到 MainActivity2。证明是代码:Toast.makeText(getApplication(), "Name:" +name, Toast.LENGTH_LONG).show();
它应该显示:姓名:+姓名
问题是它只出现:“姓名:”
拜托,有人可以帮助我吗? 我的代码是:
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
EditText name; Button nextPage;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
name = findViewById(R.id.namefield);
final String name = name.getText().toString();
nextPage = findViewById(R.id.nextPage);
nextPage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent senderIntent = new Intent(getApplicationContext(), MainActivity2.class);
Bundle bundle = new Bundle();
bundle.putString("name", name);
senderIntent.putExtras(bundle);
startActivity(senderIntent);
Toast.makeText(getApplication(), "Name:" +name, Toast.LENGTH_LONG).show();
}
});
}
}```
将此行移到 setOnClickListener 中:
final String name = name.getText().toString();
.
另外,如果你想检查变量名是否为空,你总是可以使用 name.isEmpty()
.
在 MainActivity 中试试这个:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
name = findViewById(R.id.namefield);
nextPage = findViewById(R.id.nextPage);
nextPage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent senderIntent = new Intent(MainActivity.this, MainActivity2.class);
String strName = name.getText().toString();
senderIntent.putExtra("NAME", strName);
startActivity(senderIntent);
}
});
}
然后在 MainActivity2 中使用这个来获取字符串:
Bundle extra = getIntent().getExtras();
String newString = extra.getString("NAME");