Java 在android studio中设置由动态创建的EditText定义的文本
我是Android开发新手。我有一个应用程序,用户在其中创建多个名称(就像他们是一个游戏的玩家一样)。这些“玩家”出现在同一活动中使用的矩阵中。(这里可以排除任何玩家) 我想在另一个活动(Main2Activity)中显示所有这些播放器(MainActivity),只显示添加的第一个播放器,然后单击按钮,切换到第二个播放器Java 在android studio中设置由动态创建的EditText定义的文本,java,android,android-studio,Java,Android,Android Studio,我是Android开发新手。我有一个应用程序,用户在其中创建多个名称(就像他们是一个游戏的玩家一样)。这些“玩家”出现在同一活动中使用的矩阵中。(这里可以排除任何玩家) 我想在另一个活动(Main2Activity)中显示所有这些播放器(MainActivity),只显示添加的第一个播放器,然后单击按钮,切换到第二个播放器 public class MainActivity extends AppCompatActivity implements View.OnClickListener {
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
RecyclerView recyclerView;
TextView textAdd;
EditText etAdd;
ArrayList<Model> models = new ArrayList<Model>();
MyAdapter myAdapter;
int position;
Button prox;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
prox = findViewById(R.id.prox);
prox.setOnClickListener(new View.OnClickListener() {
//next screen
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, Main2Activity.class);
String nome = etAdd.getText().toString();
intent.putExtra("value", nome);
startActivity(intent);
}
});
recyclerView = findViewById(R.id.recyclerView);
textAdd = findViewById(R.id.text_adicionar);
etAdd = findViewById(R.id.et_Adicionar);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new GridLayoutManager(this, 3));
myAdapter = new MyAdapter(getApplicationContext(),
models, new MyAdapter.Onclick() {
@Override
public void onEvent(Model model, int pos) {
position = pos;
etAdd.setText(model.getId());
}
});
recyclerView.setAdapter(myAdapter);
textAdd.setOnClickListener(this);
}
public void onClick(View view) {
switch (view.getId()) {
case R.id.text_adicionar: {
insertItem(String.valueOf(etAdd.getText()));
}
break;
}
}
private void insertItem(String name) {
Gson gson = new Gson();
try {
JSONObject jsonObject = new JSONObject();
jsonObject.put("name", name);
Model model = gson.fromJson(String.valueOf(jsonObject), Model.class);
models.add(model);
myAdapter.notifyDataSetChanged();
} catch (JSONException e) {
e.printStackTrace();
}
}
我不确定我是否完全理解您的问题,但您是否只是在寻找一种将数据从一个活动传递到另一个活动的方法 如果是这样,请使用
.putExtra()
启动下一个活动。在第二个活动的
onCreate
方法中,使用.getExtras()
检索数据
在第一个活动中
Intent intent = new Intent(this, Activity2.class);
intent.putExtra("DataName", data);
startActivity(intent);
在第二次活动中
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_game);
String[] dataArray = getIntent().getExtras().get("DataName"));
}
编辑:
StackOverflow是英文的。请把你的问题翻译成英语。可能是重复的,也许你的问题有些混乱。编辑文本字段和回收视图是否在同一活动中?您的问题建议在活动之间传递,但您的代码似乎都在同一个活动中。我更新了我的问题,我想在活动之间传递数据,但由于在第一个屏幕上动态创建了editText,我不知道如何引用它们–我更新了我的问题,我想在活动之间传递数据,但是由于在第一个屏幕上动态创建了editText,我不知道如何在Activity2 implement View.OnClickListener中引用它们,与MainActivity相同。然后对于按钮setOnClickListener(此);然后可以保持onClick方法中的代码不变。问题是,您正在为onClick-in Activity2使用一个内嵌类,因此它试图获取按钮的getExtras(),而不是Activity2。传递给另一个活动的值是editText中的值,我想传递editText中已经输入的值以及添加到数组中的值。我不明白问题是什么。这些值是否未传递给Activity2,或者您不确定如何在Activity2中接收它们?
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_game);
String[] dataArray = getIntent().getExtras().get("DataName"));
}
public class Main2Activity extends AppCompatActivity implements View.OnClickListener {
Button play;
TextView text_player_name;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
play = findViewById(R.id.play);
text_player_name = findViewById(R.id.text);
play.setOnClickListener(this);
}
@Override
public void onClick(View v) {
String name = getIntent().getExtras().getString("value");
text_player_name.setText(String.valueOf(name));
}