我从Android应用中的API
获取数据,并在活动之间以bundle
转移。
在OnPostExectute
中,我创建了一系列JSON 数据和 title ,这些包含在我的第二个活动中显示。
现在我想使用switch-case
语句,以便在点击button
时,我从正确的API获取数据并在{{1}中传输正确的标题}。
我已将bundle
文件中的OnClick
功能分配给我的按钮。
有人能指出我如何做到这一点的正确方向吗?
我可以将xml
public void
语句放在Switch Case
内吗?因为它似乎不起作用。
如果有人能查看我的代码并给我一些关于它的结构的提示,我将不胜感激。
谢谢!
以下是我的Protected Void (OnPostExecute)
代码:
PostExecute
下面是我的.java按钮:
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
public void btnHelp(View v) {
Button clickedButton = (Button) v;
switch (clickedButton.getId()) {
case R.id.btnHousing:
String activity_title = getResources().getString(R.string.title2);
Intent intent = new Intent(MainActivity.this, DisplayDataActivity.class);
Bundle extras = new Bundle();
extras.putString("title", activity_title);
extras.putString("JSON_Object", result);
intent.putExtras(extras);
startActivity(intent);
break;
case R.id.btnFood:
String activity_title = getResources().getString(R.string.title1);
Intent intent = new Intent(MainActivity.this, DisplayDataActivity.class);
Bundle extras = new Bundle();
extras.putString("title", activity_title);
extras.putString("JSON_Object", result);
intent.putExtras(extras);
startActivity(intent);
break;
}
}
}
这是我的两个按钮的.xml文件:
public void btnHelp1(View view) {
JSONTask objJSONTask=new JSONTask(MainActivity.this);
objJSONTask.execute("URL_with_API_1");
}
public void btnHelp2(View view) {
JSONTask objJSONTask=new JSONTask(MainActivity.this);
objJSONTask.execute("URL_with_API_2");
}
答案 0 :(得分:0)
请试试这个......
<强> 1。 activity_main.xml中强>
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin">
<Button
android:text="@string/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onHouse"
android:id="@+id/btnHousing"
/>
<Button
android:text="@string/text2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onFood"
android:layout_below="@+id/btnHousing"
android:id="@+id/btnFood"
/>
<强> 2。 OnTaskCompleted.java 强>
public interface OnTaskCompleted {
public void onTaskOne(String result);
public void onTaskTwo(String result);
}
第3。 Constants.java 强>
public class Constants {
public static final int URL_with_API_1 = 1;
public static final int URL_with_API_2 = 2;
}
<强> 4。 JSONTask.java 强>
public class JSONTask extends AsyncTask<String, Void, String> {
private OnTaskCompleted mOnTaskCompleted;
private int apiType = 0;
public JSONTask(int apiType, OnTaskCompleted mOnTaskCompleted) {
this.apiType = apiType;
this.mOnTaskCompleted = mOnTaskCompleted;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected String doInBackground(String... params) {
String api = params[0];
// make rest call and return valid data to onPostExecute callback.
return null;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
//Magic...
switch (apiType) {
case Constants.URL_with_API_1:
if (mOnTaskCompleted != null) mOnTaskCompleted.onTaskOne(result);
break;
case Constants.URL_with_API_2:
if (mOnTaskCompleted != null) mOnTaskCompleted.onTaskTwo(result);
break;
default:
}
}
}
<强> 5。 MainActivity.java 强>
public class MainActivity extends AppCompatActivity {
private String JSON_RESULT_API_1 = "";
private String JSON_RESULT_API_2 = "";
private JSONTask mJsonTask;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//make api 1
mJsonTask = new JSONTask(Constants.URL_with_API_1, mOnTaskCompleted);
mJsonTask.execute("URL_with_API_1");
//make api 2
mJsonTask = new JSONTask(Constants.URL_with_API_2, mOnTaskCompleted);
mJsonTask.execute("URL_with_API_2");
}
public void onHouse(View view) {
String activity_title = getResources().getString(R.string.title2);
Intent intent = new Intent(MainActivity.this, DisplayDataActivity.class);
Bundle extras = new Bundle();
extras.putString("title", activity_title);
extras.putString("JSON_Object", JSON_RESULT_API_1);
intent.putExtras(extras);
startActivity(intent);
}
public void onFood(View view) {
String activity_title = getResources().getString(R.string.title1);
Intent intent = new Intent(MainActivity.this, DisplayDataActivity.class);
Bundle extras = new Bundle();
extras.putString("title", activity_title);
extras.putString("JSON_Object", JSON_RESULT_API_2);
intent.putExtras(extras);
startActivity(intent);
}
OnTaskCompleted mOnTaskCompleted = new OnTaskCompleted() {
@Override
public void onTaskOne(String result) {
JSON_RESULT_API_1 = result;
}
@Override
public void onTaskTwo(String result) {
JSON_RESULT_API_2 = result;
}
};
}