Protected Void

时间:2017-03-11 13:08:41

标签: java android switch-statement

我从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");
}

1 个答案:

答案 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;
    }
    };
    }
  1. 快乐的编码......如果有任何疑问,请告诉我。