Wer würde denken, ein Dialogfeld zum Anzeigen zu bekommen wäre so schwierig. In C# ist es so einfach. Ich habe überall nach Hilfe gesucht und jeder Tipp scheint mir Ärger zu machen. Kann jemand bitte den folgenden Code anschauen und mir sagen, wo ich vielleicht falsch gelaufen bin?Android-Dialog zeigt nicht
Was ich will, ist sehr einfach. Benutzer klickt auf die Schaltfläche. Dann erscheint die Liste. Dann klickt der Benutzer auf eines der Elemente in der Liste und der Dialog erscheint. Der Code in onItemClick im listview-Ereignis stammt von jemand anderem. Es funktioniert anscheinend für diese Person. Ich klicke und sehe nichts. Ich bin offen für Vorschläge, wie es zu beheben ist, oder neuen Code alle zusammen. Entschuldigung, das Protokoll hat keine Fehlermeldungen.
Bitte seien Sie spezifisch über, wo ich den Code als ich ein Android-Noob bin. Und danke im Voraus!
public class SetPrediction extends Activity
{
Button btnInsrt, btnFTeam, btnSTeam;
ArrayList<NameValuePair> nameValuePairs;
TextView txtGameTeams;
Bundle recdData;
String game;
JSONArray jArray;
String result;
InputStream is;
StringBuilder sb;
ArrayList<String> fNames;
ListView listView;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.set_prediction);
nameValuePairs = new ArrayList<NameValuePair>();
txtGameTeams = (TextView) findViewById(R.id.txtGameTeams);
recdData = getIntent().getExtras();
game = recdData.getString("xxxx.xxxx.xxx");
txtGameTeams.setText("xxxxxxx: " + game + " game.");
btnInsrt = (Button) findViewById(R.id.btnInsert);
btnFTeam = (Button) findViewById(R.id.btnFirstTeam);
btnSTeam = (Button) findViewById(R.id.btnSecondTeam);
btnFTeam.setText(removeSpaces(game.split("vs")[0]));
btnSTeam.setText(removeSpaces(game.split("vs")[1]));
btnSTeam.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
String result = "";
ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("players", removeSpaces(game.split("vs")[1])));
fNames = new ArrayList<String>();
listView = (ListView) findViewById(R.id.lstPlayerForPrediction);
//http post
try
{
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://xxxxx/getTeamPlayers.php");
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
InputStream is = entity.getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null)
{
sb.append(line + "\n");
}
is.close();
result=sb.toString();
}
catch(Exception e)
{
Log.e("log_tag", "Error in http connection " + e.toString());
}
//parse json data
try
{
JSONArray jArray = new JSONArray(result);
for(int i=0;i<jArray.length();i++)
fNames.add(jArray.getJSONObject(i).getString("First_Name"));
}
catch(JSONException e)
{
Log.e("log_tag", "Error parsing data " + e.toString());
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(SetPrediction.this, android.R.layout.simple_list_item_1, fNames);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new OnItemClickListener()
{
public void onItemClick(AdapterView<?> arg0, View predictView, int item, long arg3)
{
final CharSequence[] items = {"Online", "Away", "Do not distrub","Invisible","Offline"};
AlertDialog.Builder builder = new AlertDialog.Builder(SetPrediction.this);
builder.setTitle("Change Status");
builder.setItems(items, new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int item)
{
Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show();
}
});
AlertDialog alert = builder.create();
alert.show();
}
});
}
});
}
public String removeSpaces(String s)
{
StringTokenizer st = new StringTokenizer(s," ",false);
String t="";
while (st.hasMoreElements()) t += st.nextElement();
return t;
}
Das Problem ist in dem listView.setOnItemClickListener(new OnItemClickListener()
Ereignisse. Das ist der Teil, der nicht funktioniert.
Füge ich dies außerhalb der Klassendefinition? Also zum Beispiel nach der Methode 'removeSpaces'? Und dann 'showAlertDialog' aus' onItemClick' aufrufen? – Zolt
Wenn ich verstehe, dass Sie diese Funktion wiederverwenden möchten, indem Sie sie in eine separate Klasse einfügen? Wenn das der Fall ist, können Sie eine Klasse mit dem Namen "MyUtil" erstellen und darin einfügen. Sie können es aus jeder Aktivität innerhalb von 'onItemClick' aufrufen, indem Sie die Parameter übergeben. – Ravi1187342
Die Warnmeldung wird weiterhin nicht angezeigt. Ich lege deinen Code wie folgt in eine Klasse: public class Util erweitert die Aktivität {} 'und dann innerhalb von' onItemClick' in 'SetPrediction' habe ich' Util.showAlertDialog ("testTitle", "testMssage", predictView.getContext()) hinzugefügt ; 'aber nichts erscheint. – Zolt