2012-01-29 2 views
0
String[] songList = { 
     "1", 
     "2", 
     "3", 

}; 
Spinner sp; 


     TextView selection; 


     @Override 
     public void onCreate(Bundle icicle) { 
      super.onCreate(icicle); 
      setContentView(R.layout.main); 
      selection = (TextView) findViewById(R.id.selection); 

      Spinner spin = (Spinner) findViewById(R.id.spinner); 
      spin.setOnItemSelectedListener(this); 

      ArrayAdapter<Object> aa = new ArrayAdapter<Object>(
        this, 
        android.R.layout.simple_spinner_item, 
        songList); 

      aa.setDropDownViewResource(
       android.R.layout.simple_spinner_dropdown_item); 
      spin.setAdapter(aa); 
     } 

     public void onItemSelected(AdapterView<?> parent, View v, int position, 
       long id) { 
      selection.setText(songList[position]); 
      String song = songList[position]; 
      Intent intent = new Intent(this, Tabview.class); 
      Bundle b = new Bundle(); 
      b.putString("song", song); 
      intent.putExtras(b); 
      startActivityForResult(intent, 0); 
     } 

     public void onNothingSelected(AdapterView<?> parent) { 
      selection.setText(""); 
     } 
{ 

나는이 코드를 지금 작성했습니다. 꽤 많이 내가 뭘 하려는지 새로운 활동 (내가 한)을 열려면 스피너 선택을 사용하지만, 또한 링크를 기반으로 정보를 다운로드하려면 httpget을 사용하려고합니다.회 전자를 사용하여 새로운 활동을 열고 다운로드 한 html 데이터를 표시합니다.

예 : "1"을 누르면 새로운 활동이 열리고 httpget 메소드가 호출 된 다음 사용자가 누른 작업에 따라 데이터가 다운로드됩니다. (예 : "1"= google.com, "2"= facebook.com 등) 각 데이터에 대한 데이터가 변경되고 해당 데이터가 활동에 표시됩니다.

각 선택에 대한 데이터를 표시하는 데 하나의 활동 만 사용하려고합니다. 에서 또한

내 "Tabview.class는"내가 가지고 : 어떤 도움

Bundle b = new Bundle(); 
    String song = b.getString("song"); 

감사합니다!

답변

0

정확히 어떤 오류가 발생합니까? 코드가 작동하는 것 같습니다. 선택에 따라 무언가를 선택하고 싶다면 번들 문자열에 if 조건을 사용할 수 있습니다. 또는 여기에 http get에 관한 문제가있는 경우 here 설명서를 살펴보십시오. AyncTask를 사용하여 차단하지 않고 http 요청을 할 수 있습니다.

참고로, 나는 당신의 코드의 단지 개선 된 버전 인 나의 코드를 첨부했다.

public class ActivityxActivity extends Activity { 
    String[] songList = {"ONE","TWO","THREE"}; 
    Intent intent1; 
    Bundle strs; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     final Spinner sp = (Spinner) findViewById(R.id.spinner1); 
     ArrayAdapter<Object> aa = new ArrayAdapter<Object>(this, android.R.layout.simple_spinner_item, songList); 
     aa.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     sp.setAdapter(aa); 
     sp.setOnItemSelectedListener(new MyOnItemSelectedListener()); 
     intent1 = new Intent(getApplicationContext(),AnotherActivity.class); 
    } 
    public class MyOnItemSelectedListener implements OnItemSelectedListener { 
     public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { 
      strs = new Bundle(); 
      strs.putInt("item", pos); 
      strs.putString("song", parent.getItemAtPosition(pos).toString()); 
      intent1.putExtras(strs); 
      startActivity(intent1); 
     } 
     @Override 
     public void onNothingSelected(AdapterView<?> arg0) {} 
    } 
} 

그리고 다른 활동

,

public class AnotherActivity extends Activity { 
    Bundle data; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     data = getIntent().getExtras(); 
     Integer item = data.getInt("item"); 
     //Use a switch(item) here to switch to different links based on selection 
     TextView tv = (TextView) findViewById(R.id.tv1); 
     tv.setText("Another Activity, Item is :" + item.toString()); 
    } 
} 

당신은 안드로이드 매니페스트 파일에 활동을 추가해야합니다.

감사합니다.

+0

감사합니다. 하지만 내 문자열에 약 100 개의 다른 단어가 있다면 [] {}; 백개의 if 문을 수행 할 필요없이 각각을 특정 웹 주소에 링크하는 방법이 있습니까? – Chandler

+0

위의 해결 방법이 효과가 있다면 답변을 수락하십시오. 각 항목을 해당 웹 주소와 연결하는 사용자 정의 ArrayList를 적용 할 수있는 사용자 정의 어댑터를 사용할 수 있습니다. 하지만 다른 스레드에서 질문하는 것이 좋습니다. 감사. –