Reputation: 143
I read data, then create Menu with two posible choices when one is chosen it open new intent and show data. But as I can see it doesn't send courseName value. The problem is with methods onCreateOptionsMenu and onOptionsItemSelected because they won't get the course value from main onCreate method. Could you help me and tell me how to fix it?
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;
}
Upvotes: 1
Views: 129
Reputation: 22306
You are putting the values into your intent backwards
in.putExtra(courseName, "courseName");
should be
in.putExtra(key, value);
in.putExtra("courseName", courseName);
Upvotes: 2