我有main_activity.xml
EditText
和一个Button
。
在EditText
内插入一个名称,然后单击Button
,将出现一个具有新布局的新活动。
现在,我想在新活动(hiscores.xml
)中使用EditText中的值,但是应用程序崩溃了。
我的MainActivity如下:
package com.example.test;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.opening_screen);
button = findViewById(R.id.continue_button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
openHiScore();
}
});
}
public void openHiScore(){
Intent intent = new Intent(this,HiScore.class);
startActivity(intent);
}
}
然后,在HiScore内部,代码是;
package com.example.test;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.EditText;
public class HiScore extends AppCompatActivity {
EditText Name= (EditText)findViewById(R.id.username_text);
String UserName = Name.getText().toString();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.hiscore);
}
}
如何正确获取插入EditText
中的值以在字符串UserName
中使用它?
谢谢!
答案 0 :(得分:0)
使用分发包将数据从一个活动发送到另一活动。将数据存储到分发包中,并创建一个意图以放置额外的分发包以通过它。
public void openHiScore(){
Intent intent = new Intent(this,HiScore.class);
Bundle b = new Bundle();
b.putString("name", editText.getText().toString());
intent.putExtras(b)
startActivity(intent);
}
In the HiScore class extract the data from the Bundle.
public class HiScore extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.hiscore);
Intent in = getIntent();
// get the Bundle that stores the data of this Activity
Bundle b = in.getExtras();
// getting data from bundle
String name = b.getString("name");
}
}
答案 1 :(得分:0)
要将数据从一项活动传递到另一项活动,您需要将数据作为额外添加到您的intent
。
public void openHiScore(){
Intent intent = new Intent(this,HiScore.class);
intent.putExtra("NAME_INPUT",nameString)
startActivity(intent);
}
然后在接收活动中,您想要从intent
中检索名称:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.hiscore);
String name = getIntent().getStringExtra("NAME_INPUT");
}