-1

私はandriod(日食を使用)のアプリケーションをコーディングしようとしています。このアプリケーションでは、imagebuttonを押すと、alertdialougeがランダムな文字列と配列を生成します。ボタンを押すたびに、配列から文字列を変更します。 。alertdialougeとランダムな文字列を取得するコードをコーディングしましたが、アラートダイアログではなくテキストビューにそれを行います。私のコードを見て、何を変更する必要があるか教えていただけますか?

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

連鎖したメソッド呼び出しをすべて1行に詰め込もうとしないと、何が起こっているのかを理解しやすくなります。

また、これら2つの変数名を逆に取得したようです。

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