2012-04-19 58 views
1

我讀取數據,然後創建菜單有兩個可選擇的選擇,當選擇一個它打開新的意圖和顯示數據。但是,我可以看到它不會發送courseName值。問題在於方法onCreateOptionsMenu和onOptionsItemSelected,因爲它們不會從主onCreate方法獲取課程價值。你能幫我,告訴我如何解決它?Android意圖不會發送值

String courseName = null; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.single_course_layout); 

    Intent in = getIntent(); 
    courseName = in.getStringExtra("fullname"); 

    TextView label = (TextView)findViewById(R.id.label); 
    label.setText(courseName); 
    String summary = null; 
    TextView summaryContent = (TextView)findViewById(R.id.summary); 


    ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 
    nameValuePairs.add(new BasicNameValuePair("cname",""+courseName)); 
    InputStream is = null; 
    String result = null; 
    try{ 
      HttpClient httpclient = new DefaultHttpClient(); 
      HttpPost httppost = new HttpPost("http://ik.su.lt/~jbarzelis/Bdarbas/getCourseSummary.php"); 
      httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
      HttpResponse response = httpclient.execute(httppost); 
      HttpEntity entity = response.getEntity(); 
      is = entity.getContent(); 
    }catch(Exception e){ 
      Log.e("log_tag", "Error in http connection "+e.toString()); 
    } 
    try{ 
      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"); 
        System.out.println(line); 
      } 
      is.close(); 

      result=sb.toString(); 
    }catch(Exception e){ 
      Log.e("log_tag", "Error converting result "+e.toString()); 
    } 

try{ 
    JSONArray jArray = new JSONArray(result); 
    for(int ii=0;ii<jArray.length();ii++){ 
      JSONObject json_data = jArray.getJSONObject(ii); 
      summary = json_data.getString("summary"); 
    } 
    summaryContent.setText(summary); 
} catch(JSONException e){ 
    Log.e("log_tag", "Error parsing data "+e.toString()); 
} 

}; 

public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.menu, menu); 
    return true; 
}; 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case R.id.users:  

      Intent in = new Intent(getApplicationContext(), AllCourseUsers.class); 
      in.putExtra(courseName, "courseName"); 
      startActivity(in); 
      break; 

     case R.id.data:  Toast.makeText(this, "You will see data list!", Toast.LENGTH_LONG).show(); 
          break; 
     } 
    return true; 
} 

回答

2

你把值到你的意圖向後

in.putExtra(courseName, "courseName"); 

應該

in.putExtra(key, value); 

in.putExtra("courseName", courseName); 
+0

我完全以失敗了。非常感謝。 – LTnewbie 2012-04-19 18:23:07