2012-04-05 33 views
2

表示するダイアログボックスが表示されるのは誰にとっても難しいことです。 C#ではとても簡単です。私は助けのためにすべての行を見てきました、そして、すべてのヒントは、私が良いよりもトラブルを引き起こすようです。誰かが下のコードを見て、どこに間違っているかもしれないか教えてください。Androidのダイアログが表示されない

私が望むのはとても簡単です。ユーザーがボタンをクリックします。リストが表示されます。ユーザーがリスト内の項目の1つをクリックすると、ダイアログが表示されます。 listviewイベントのonItemClickのコードは、他の誰かからのものです。それは明らかにその人のために働く。私はクリックし続けて何も見ない。私はそれを修正する方法や新しいコードをまとめて提案しています。申し訳ありませんが、ログにエラーメッセージはありません。

私がAndroidのnoobとしてコードをどこに置くかについて具体的に記述してください。そして事前にありがとう!

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; 
    } 

問題はlistView.setOnItemClickListener(new OnItemClickListener()イベントにあります。それが動作しない部分。

答えて

1

チェック:

public void showAlertDialog(String title, String message, Context context) 
{ 
    final AlertDialog alertDialog = new AlertDialog.Builder(context).create(); 

    alertDialog.setTitle(title); 
    alertDialog.setMessage(message); 
    alertDialog.setButton("OK", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int which) { 
      alertDialog.dismiss(); 
     } 
    }); 

    alertDialog.show(); 
} 
+0

これをクラス定義の外に置いていますか?だから、例えば 'removeSpaces'メソッドの後に?そして 'onItemClick'の中から' showAlertDialog'を呼び出しますか? – Zolt

+0

私はこの機能を別のクラスに入れて再利用したいと思っていますか?その場合、あなたは 'MyUtil'という名前のクラスを作り、それをその内部に置くことができます。パラメータを渡すことで 'onItemClick'内の任意のアクティビティから呼び出すことができます。 – Ravi1187342

+0

警告メッセージはまだ表示されません。あなたのコードを 'public class Util extends Activity {}'と 'SetPrediction'の' onItemClick'の中からクラスに入れました。 'Util.showAlertDialog(" testTitle "、" testMssage "、predictView.getContext())を追加しました。 ;しかし、何も現れません。 – Zolt

0

あなたのコードだけマイナーチェンジ:::

AlertDialog.Builder builder = new AlertDialog.Builder(SetPrediction.this).create(); 
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(); 
} 
}); 
builder.show(); 

は、以下:::

インポートandroid.app.AlertDialogをインポートするのではなく、これらのコードを使用してみてください。 import android.content.DialogInterface;このうち

+0

これはビルドされません。 'AlertDialog型のメソッドsetItems(CharSequence []、new DialogInterface.OnClickListener(){})が未定義です。 – Zolt

+0

インポートを追加します –