2017-05-26 3 views
1

私は、テキストビューのテキストを "Player Selected:"に変更したドロップダウンメニューを作成しようとしていて、ドロップダウンメニューから選んだプレイヤーを選択しようとしています。しかし、私はアンドロイドでアプリをテストするとき、私はスピナー項目をクリックすることができますが、何も登録していません。テキストビューは変更されず、クリックリスナーをまったく登録していないかのように何も記録されません。ここに私のコードは私のスピナーのonClickListenerは機能しませんか?

package com.example.buddyfizzturtles.stattracker; 

import android.app.Dialog; 
import android.content.DialogInterface; 
import android.support.v7.app.AlertDialog; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.Spinner; 
import android.widget.TextView; 
import android.widget.Toast; 
import java.util.*; 
import android.widget.AdapterView.OnItemSelectedListener; 



public class MainActivity extends AppCompatActivity { 
    EditText input; 
    Button showBtn; 
    TextView showPlayer; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     final Players p = new Players(); 
     // Pop-Up Dialog 
     AlertDialog.Builder builder = new AlertDialog.Builder(this); 
     builder.setTitle("Enter Name"); 
     builder.setIcon(R.drawable.basketball); 
     builder.setMessage("Enter a name for your player"); 

     input = new EditText(this); 
     builder.setView(input); 

     //Set Positive Button 
     builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       String text = input.getText().toString(); 
       Player x = new Player(text); 
       p.addPlayer(x); 
       Toast.makeText(MainActivity.this, "Added " + text + " to your player list", Toast.LENGTH_SHORT).show(); 

      } 
     }); 

     //Set Negative Button 
     builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       dialog.dismiss(); 

      } 
     }); 

     //Create Builder 
     final AlertDialog ad = builder.create(); 

     //Button 
     showBtn = (Button) findViewById(R.id.addPlayerButton); 
     showBtn.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       ad.show(); 
      } 
     }); 

     //Spinner Items 
     Spinner dropNames = (Spinner) findViewById(R.id.choosePlayer); 
     dropNames.setOnItemSelectedListener(new OnItemSelectedListener() { 
      @Override 
      public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) { 
       Log.d("CLICKED:", "Successful Click"); 
       showPlayer = (TextView) findViewById(R.id.showPlayer); 
       showPlayer.setText("Player Selected: " +); 

      } 

      @Override 
      public void onNothingSelected(AdapterView<?> parentView) { 
       // your code here 
      } 

     }); 

     ArrayAdapter<Player> adapter = new ArrayAdapter<Player>(this, android.R.layout.simple_spinner_item, p.returnList()); 
     adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     dropNames.setAdapter(adapter); 


    } 
} 
+0

'Log.d'は機能していませんか?デバッガはそこで停止しませんか?あなたはリスナーを明確に設定していますので、[mcve]を試してください –

+0

あなたのスピナーはアイテムをロードしますか? –

+0

R.id.showPlayerはどこを指していますか?メインアクティビティレイアウトのTextView? – Abhishek

答えて

0

これを試すことができます。それは、これが

+0

これは機能しませんでした。 1回クリックすると何もログに記録されず、テキストビューも変更されません – SomeCoder

0

スピナーは、データをロードしている場合に役立ちます

Spinner spinner=(Spinner)findViewById(R.id.spinner); 
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
    @Override 
    public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) { 
     Log.d("CLICKED:", "Successful Click"); 
     showPlayer = (TextView) findViewById(R.id.showPlayer); 
     showPlayer.setText("Player Selected: " +); 
    } 

    @Override 
    public void onNothingSelected(AdapterView<?> adapterView) { 

    } 
}); 

希望が解決するかどうか見てみましょう、私は(それがリスナーの外showPlayerを定義するために良いことだ)これはあなたを助けると思います。

Spinner dropNames = (Spinner) findViewById(R.id.choosePlayer); 
TextView showPlayer = (TextView) findViewById(R.id.showPlayer); 

      dropNames.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
           @Override 
           public void onItemSelected(
             AdapterView<?> parent, View view, int position, long id) { 

             showPlayer.setText("Player Selected: " + String.valueOf(dropNames.getSelectedItem()); 
           } 
           @Override 
           public void onNothingSelected(AdapterView<?> parent) 
           { 

           } 
          }); 
+0

私はそれを実行したときに何も変更しませんでした。 – SomeCoder

関連する問題