2017-04-21 14 views
-2

アンドロイドスタジオのドロワブルから画像を表示するには、スピナーと次のページをクリックします。これは、スピナーを示すスピナーをクリックして画像を表示

のみ

public class navigation extends AppCompatActivity implements AdapterView.OnItemSelectedListener { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_navigation); 

    Spinner end = (Spinner) findViewById(R.id.end_spinner); 
    //Create an ArrayAdapter using the string array and a default spinner layout 
    ArrayAdapter<CharSequence> end_adapter = ArrayAdapter.createFromResource(this, R.array.end_point, android.R.layout.simple_spinner_item); 
    //Specify the layout to use when the list of choices appears 
    end_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    //Apply the adapter to the spinner 
    end.setAdapter(end_adapter); 
    end.setOnItemSelectedListener(this); 
} 

@Override 
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
    if (parent.getId() == R.id.end_spinner){ 
     if(position >=1 && position <=16){ 
      TextView mytext = (TextView) view; 
      Toast.makeText(this,mytext.getText()+" selected",Toast.LENGTH_LONG).show(); 
      Intent PlanIntent = new Intent(navigation.this, AStar.class); 
      Bundle bundle = new Bundle(); 
      bundle.putInt("classname",position); 
      PlanIntent.putExtras(bundle); 
      startActivity(PlanIntent); 
     } 
     else { 
      Toast.makeText(this,"Please select the destination",Toast.LENGTH_LONG).show(); 
     } 
    } 
} 

     public void onNothingSelected(AdapterView<?> parent) 
     { 
      Spinner start = (Spinner) findViewById(end_spinner); 
      assert start != null; 
      start.setOnItemSelectedListener(this); 
      if (start.getId() != end_spinner) { 

      } 

     } 
@Override 
public void onBackPressed(){ 
    startActivity(new Intent(this,MainActivity.class)); 
    finish(); 
} 
} 

これは画像を表示することができ、次のページである

ASTARはAppCompatActivity {

ImageView imageView; 

PhotoViewAttacher mAttacher; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_astar); 

    imageView = (ImageView) findViewById(R.id.imageView); 
    int position = getIntent().getIntExtra("classname", -1); 
    if(position != -1){ 
     int classImg = classImages[position]; 
     imageView.setImageResource(classImg); 
    } 

    mAttacher = new PhotoViewAttacher(imageView); 
} 
} 

Iは16クラス名を持っているを拡張

パブリッククラス私がしたいのは、ユーザーが各クラス名をクリックすると、drawableから画像が表示されるということです。各クラス名には異なるイメージがあります。私のアイデアは、他にも使われていますが、コードを知らないのです。

答えて

1

あなたはすでにR.array.end_pointの使用方法を知っていますので、対応するドロウアブルと同じサイズの別のxml配列を作成してください。

bundle.putInt("classname",position);の使用方法もわかっています。そのため、インテントから2番目のアクティビティでその整数を取得する必要があります。これら二つの概念で

、あなたが2番目の活動中の特定の位置に描画可能を取得し、それに応じて画像を描画することができます

imageView = (ImageView) findViewById(R.id.imageView); 
int position = getIntent().getIntExtra("classname", -1); 
if(position != -1){ 
    // TODO: get some R.array.classImages 
    int classImg = classImages[position]; 
    imageView.setImageResource(classImg); 
} 

私の考えは他の

場合に使用されますそれは間違った考えです。上記を参照。あなたが意図したことを確実にするために、他のステートメントと一つのifステートメントだけがありません。あなたが必要とするのは、描画可能なリソースの整数配列です。

+0

Ya。 if(bundle!= null){ }ここで私はif elseコードだけを書く方法がわからない –

+0

他のステートメントはありません...なぜあなたがそう思うかわからない –

+0

「int classPosition = bundle.getInt' –

関連する問題