2012-04-16 64 views
-1

我試圖代碼的Andriod(使用eclipse)一個應用程序中,當被的ImageButton按下alertdialouge想出了一個隨機字符串和數組,每次隨機字符串創建對話警報按下按鈕,我希望它從數組中改變字符串。我已經編寫了一個alertdialouge和一些代碼,獲得一個隨機字符串,但它確實爲文本視圖,而不是一個警報的臺詞。你能看看我的代碼並告訴我我需要改變什麼嗎?使用來自Android的陣列

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

你如何代碼的東西,你不明白嗎?您有一個警告對話框,但不知道要在哪裏更改以顯示文本? – 2012-04-16 19:42:23

+0

林學習,採取代碼等人的作品都寫和適應它,以瞭解它是如何工作的,任何想法是怎麼來幫助編程? :) – CarbonAssassin 2012-04-16 19:52:13

回答

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

即時得到的資源一個錯誤。和新的AlertDialog.Builder(this); – CarbonAssassin 2012-04-16 20:11:12

+0

實際上我只是得到一個構造函數AlertDialog.Builder(新的View.OnClickListener(){})是未定義的錯誤 – CarbonAssassin 2012-04-16 20:19:28

+0

現在請看看編輯答案 – Jitendra 2012-04-16 20:46:26

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

...} 
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; 
+0

將你們中的一個能夠能夠證明我在這個示例代碼?的東西這就是困惑我一人仍然將其鏈接到我的按鈕 – CarbonAssassin 2012-04-16 20:04:08