gpt4 book ai didi

java - 根据填充的 editText 数量打开另一个 Activity

转载 作者:行者123 更新时间:2023-12-02 01:53:37 25 4
gpt4 key购买 nike

app 有一个 MainActivity,其中包含 6 个 editText 字段和一个按钮。还有 5 个 Activity ,名为 Activity2Activity3 等。现在,当用户在 editText 字段中输入名称,然后按 >按钮app应该找出填充了多少个editText字段,并打开名称中包含相应数字的 Activity 。

示例:

  • 如果仅填写一个字段,则会出现一个 toast ,提示更多玩家
  • 如果填充了两个字段,app 将打开 Activity2
  • 如果填充了三个字段,app 将打开 Activity3 等。

现在,解决问题了。我错过了一些东西,但无法找出什么。这是MainActivity.java

public class MainActivity extends AppCompatActivity {

private EditText editText1,editText2,editText3,editText4,editText5,editText6;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

Button btn = findViewById(R.id.btn);
editText1 = findViewById(R.id.editText1);
editText2 = findViewById(R.id.editText2);
editText3 = findViewById(R.id.editText3);
editText4 = findViewById(R.id.editText4);
editText5 = findViewById(R.id.editText5);
editText6 = findViewById(R.id.editText6);


btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

int filledFileds = countFilledFields();
Log.d("filled", String.valueOf(filledFileds));
Class newClass = MainActivity.class;

switch (filledFileds){

case 1:

Context context = getApplicationContext();
CharSequence text = "You need more players!";
int duration = Toast.LENGTH_SHORT;

Toast toast = Toast.makeText(context, text, duration);
toast.show();

break;

case 2:

newClass = Activity2.class;
System.out.println("Activity2");

break;

case 3:

newClass = Activity3.class;
System.out.println("Activity3");

break;

case 4:

newClass = Activity4.class;
System.out.println("Activity4");

break;

case 5:

newClass = Activity5.class;
System.out.println("Activity5");

break;

case 6:

newClass = Activity6.class;
System.out.println("Activity6");

break;

default:


}

Intent intent = new Intent(MainActivity.this, newClass);
}
});
}

private int countFilledFields() {

ArrayList<EditText> editTexts = new ArrayList<>();
editTexts.add(editText1);
editTexts.add(editText2);
editTexts.add(editText3);
editTexts.add(editText4);
editTexts.add(editText5);
editTexts.add(editText6);

int filledNumber = 0;

for(int i = 0;i < editTexts.size() ;i++){

if(editTexts.get(i).getText()!=null && !editTexts.get(i).getText().toString().matches("")){
filledNumber += 1;
}

}
return filledNumber;
}

}

日志显示了确切的数字,有些东西不起作用......

最佳答案

这是您的点击监听器,为简洁起见,省略了开关:

btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

int filledFileds = countFilledFields();
Log.d("filled", String.valueOf(filledFileds));
Class newClass = MainActivity.class;

switch (filledFileds){
...
}

Intent intent = new Intent(MainActivity.this, newClass);
}

问题出在最后:您创建了一个 Intent 对象……但您没有用它做任何事情。可能您刚刚忘记了 startActivity() 调用:

Intent intent = new Intent(MainActivity.this, newClass);
startActivity(intent);

此外,仔细查看这一点,您会发现用户仅输入一个 EditText 的情况存在问题。正如所写的,您仍然会尝试启动一个新 Activity (您只会启动同一 MainActivity 的新副本,这可能是一个坏主意)。更好的想法是仅在用户填写足够的 EditText 时才启动新 Activity :

btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

int filledFileds = countFilledFields();
Log.d("filled", String.valueOf(filledFileds));
Class newClass = null;

switch (filledFileds){
...
}

if (newClass != null) {
Intent intent = new Intent(MainActivity.this, newClass);
startActivity(intent);
}
}

关于java - 根据填充的 editText 数量打开另一个 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52616846/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com