[英]Buttons switch-case statement inside Protected Void
我正在从Android应用程序中的API
提取数据,并在活动之间bundle
传输。
在OnPostExectute
我创建了一个在第二个活动中显示的JSON 数据和标题包。
现在,我想使用switch-case
语句,以便在单击button
时从正确的API提取数据并在bundle
传输正确的标题。
我已将xml
文件中的OnClick
函数分配给我的按钮。
有人能指出我正确的方向吗?
我可以在“ Protected Void (OnPostExecute)
内使用Switch Case
语句放置public void
吗? 由于它似乎不起作用。
如果有人可以看一下我的代码并给我一些有关代码结构的提示,我将不胜感激。
谢谢!
以下是我的PostExecute
代码:
@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;
}
}
}
以下是我的.java按钮:
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");
}
这是我的两个按钮的.xml文件:
<Button
android:text="@string/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="btnHelp"
android:id="@+id/btnHousing"
/>
<Button
android:text="@string/text2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="btnHelp"
android:id="@+id/btnFood"
/>
请尝试这个...
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;
}
};
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.