-1

我正在尝试为 andriod 编写一个应用程序(使用 eclipse),其中当按下图像按钮时,alertdialouge 会从数组中产生一个随机字符串,每次按下按钮时我都希望它更改数组中的字符串. 我编写了一个 alertdialouge 和一些获取随机字符串的代码,但它是针对文本视图而不是 alert dialouge 进行的。你能看看我的代码并告诉我我需要改变什么吗?

package kevin.erica.box;

import android.app.Activity;
import android.app.AlertDialog;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import java.util.Random;

public class TheKevinAndEricaBoxActivity extends Activity {
/** Called when the activity is first created. */
private String[] myString;
private String list;
private static final Random rgenerator = new Random();

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Resources res = getResources();

    myString = res.getStringArray(R.array.myArray); 

    list = myString[rgenerator.nextInt(myString.length)];

    TextView tv = (TextView) findViewById(R.id.textView1);
    tv.setText(list);
}

public void kevin(View view)
{
new AlertDialog.Builder(this).setTitle("The Box").setMessage(getResources().getText(R.string.list)).setNeutralButton("Close", null).show(); }
}
4

3 回答 3

1

据我了解,每当按下特定的 ImageButton 时,您都需要从数组中随机选择一个文本字符串。

试试下面的代码:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    Resources res = getResources();

   myString = res.getStringArray(R.array.myArray); 

   list = myString[rgenerator.nextInt(myString.length)];

   ImageButton ib = (ImageButton) findViewById(R.id.img_button_id);
   ib.setOnClickListener(new OnClickListener() {
       @Override
       public void onClick(View arg0) {
           AlertDialog.Builder b = new AlertDialog.Builder(TheKevinAndEricaBoxActivity.this);
           b.setMessage(myString[rgenerator.nextInt(myString.length)]);
           Dialog d = b.create();
           d.show();
       }
   });
}
于 2012-04-16T19:59:43.710 回答
0
{...

  list = myString[rgenerator.nextInt(myString.length)];

  TextView tv = (TextView) findViewById(R.id.textView1);
  tv.setText(list);
}

public void kevin(View view)
{
  new AlertDialog.Builder(this).setTitle("The Box").setMessage(getResources().getText(R.string.list)).setNeutralButton("Close", null).show(); 
}
...}

R.string.list 是一个在运行时永远不会改变的静态字符串,它在 res/values/strings.xml 中定义

我会完全删除 TextView 并传入要在警报中显示的值。

{...

  String randomInt = myString[rgenerator.nextInt(myString.length)];
  showAlert(randomInt);
}

public void showAlert(String randomInt){
  new AlertDialog.Builder(this).setTitle("The Box").setMessage(
    "Here's a random number: " + randomInt
    ).setNeutralButton("Close", null).show(); 
}

...}
于 2012-04-16T19:54:36.220 回答
0

您只需要更改 .setTitle() 或 .setMessage() 即可传入您的值。像这样的东西应该适合你:

    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setMessage(list)
    .setCancelable(false)
    .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int id) {
            // put your code here
        }
    })
    .setNegativeButton("No", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int id) {
            // put your code here 
            dialog.cancel();
        }
    });
    AlertDialog alertDialog = builder.create();
    alertDialog.show();

如果您不尝试将所有链接的方法调用塞到一行中,则更容易理解正在发生的事情。

此外,您似乎获得了这两个向后的变量名称:

private String[] myString;
private String list;
于 2012-04-16T19:54:37.157 回答