【问题标题】:Set text defined by a dynamically created EditText in android studio在android studio中设置由动态创建的EditText定义的文本
【发布时间】:2019-11-23 07:13:34
【问题描述】:

我是 Android 开发的新手。我有一个应用程序,用户可以在其中创建多个名称(就好像他们是游戏玩家一样)。这些“玩家”以矩阵的形式出现在同一个活动中。 (可以在这里排除任何玩家)。

我想在另一个活动 (Main2Activity) 中显示所有这些玩家 (MainActivity),只显示添加的第一个玩家,然后单击按钮切换到第二个玩家。

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();
    }

}

}

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);
}

    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.play: {
                String name = getIntent().getExtras().getString("value");
                text_player_name.setText(String.valueOf(name));

            }
            break;
        }
    }

}

【问题讨论】:

  • StackOverflow 是英文的。请edit您的问题并将其翻译成英文。
  • 您的问题可能有些混乱。编辑文本字段和 RecyclerView 是否在同一个活动中?您的问题建议在活动之间传递,但您的代码似乎都在同一个活动中。
  • 我更新了我的问题,我想在活动之间传输数据,但是在第一个屏幕上动态创建 editText 我不知道如何引用它们 -

标签: java android android-studio


【解决方案1】:

我不确定我是否完全理解您的问题,但您只是在寻找一种将数据从一个 Activity 传递到另一个 Activity 的方法吗?

如果是这样,请将.putExtra() 与您的 Intent 一起使用以开始下一个 Activity。
在第二个 Activity 的 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"));
 }

编辑:

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));

 }

【讨论】:

  • 我更新了我的问题,我想在活动之间传输数据,但是在第一个屏幕上动态创建 editText 我不知道如何引用它们
  • 在Activity2中实现View.OnClickListener,同MainActivity。然后对于按钮 setOnClickListener(this);然后您可以保持 onClick 方法中的代码相同。问题是,您正在为 Activity2 中的 onClick 使用内联类,因此它试图获取 Button 而不是 Activity2 的 getExtras()。
  • 传递给另一个活动的值是editText中的值,我想传递已经在editText中输入并添加到我的数组中的值。
  • 我不明白问题出在哪里。这些值是否没有传递给 Activity2,或者您不确定如何在 Activity2 中接收它们?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-14
  • 1970-01-01
相关资源
最近更新 更多