2017-04-21 4 views
-2

회 전자 및 다음 페이지를 클릭하여 Android Studio에서 드로어 블의 이미지를 표시하고 싶습니다. 이것은 스피너를 보여줍니다회 전자를 클릭하여 이미지 표시

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

나는 16 개 클래스 이름이 확장

공용 클래스 회 전자, 내가 원하는 것은 사용자가 각 클래스 이름을 클릭하면 drawable에서 그림을 보여줄 것입니다. 각 클래스 이름에는 다른 이미지가 있습니다. 내 아이디어는 다른 경우에는 사용하지만 코드를 모른다.

답변

1

이미 R.array.end_point을 사용하는 방법을 알고 있으므로 해당 드로어 블에 대해 동일한 크기의 다른 xml 배열을 만듭니다.

bundle.putInt("classname",position);을 사용하는 방법도 알고 있으므로 인 텐트에서 두 번째 활동에 정수를 가져와야합니다. 그 두 가지 개념으로

, 당신은 그에 따라

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

예. if (bundle! = null) { } 여기서 다른 코드 만 쓰는 방법을 모르겠다 –

+0

다른 문장은 없다 ... 왜 그렇게 생각하는지 모르겠다 –

+0

'int classPosition = bundle.getInt' –