Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 按钮开关案例语句在受保护的Void中_Java_Android_Switch Statement - Fatal编程技术网

Java 按钮开关案例语句在受保护的Void中

Java 按钮开关案例语句在受保护的Void中,java,android,switch-statement,Java,Android,Switch Statement,我正在从Android应用程序中的API获取数据,并在活动之间以包的形式传输数据 在onpostExecute中,我创建了一个JSON数据包和标题,显示在我的第二个活动中 现在我想使用switch case语句,以便在单击按钮时,从正确的API获取数据,并在包中传输正确的标题 我已将xml文件中的OnClick函数分配给我的按钮 有人能给我指出正确的方向吗 我是否可以将public void和Switch Case语句放在Protected void(OnPostExecute)中?因为它似乎不

我正在从Android应用程序中的
API
获取数据,并在活动之间以
包的形式传输数据

onpostExecute
中,我创建了一个JSON数据包和标题,显示在我的第二个活动中

现在我想使用
switch case
语句,以便在单击
按钮时,从正确的API获取数据,并在
包中传输正确的标题

我已将
xml
文件中的
OnClick
函数分配给我的按钮

有人能给我指出正确的方向吗

我是否可以将
public void
Switch Case
语句放在
Protected void(OnPostExecute)
中?因为它似乎不起作用

如果有人能看看我的代码,并给我一些关于代码结构的建议,我将不胜感激

谢谢大家!

下面是我的
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;
        }

    }
}
下面是my.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"
    />
3。Constants.java

public interface OnTaskCompleted {
   public void onTaskOne(String result);
   public void onTaskTwo(String result);
}
public class Constants {
  public static final int URL_with_API_1 = 1;
  public static final int URL_with_API_2 = 2;
}
    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:
            }
          }
        }
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;
    }
    };
    }
4。JSONTask.java

public interface OnTaskCompleted {
   public void onTaskOne(String result);
   public void onTaskTwo(String result);
}
public class Constants {
  public static final int URL_with_API_1 = 1;
  public static final int URL_with_API_2 = 2;
}
    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:
            }
          }
        }
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;
    }
    };
    }
  • 快乐编码。。。如果有任何疑问,请告诉我

  • 欢迎来到堆栈溢出!我们是一个问答网站,而不是一个编码出租服务。请将您的问题缩小到一个特定的问题,这将是本网站的主题。看:还有???我插入了我的代码,询问它的潜在问题是什么,以及我应该如何编写它。非常感谢您的回答,亲爱的朋友!我试图实现代码,但是AndroidStudio在“public interface OnTaskCompleted”函数下面加了下划线,这给了我以下错误:“内部类不能有静态声明”。你知道为什么会这样吗?非常感谢你的帮助!你好这是我的JSONTask.java中的“公共接口OnTaskCompleted”:(它很有效。非常感谢你的朋友!好的因果报应会回来的!:)祝你一切顺利!当然可以!再次感谢你!如果不太麻烦的话,你介意他们向我解释一下你在代码中使用了什么样的逻辑吗?因为我真的很想学习android的Java,它看起来和我所知道的Python有很大的不同。对不起,我要求这么多!再次感谢你,朋友!我试图将代码扩展到13个按钮,但我不明白JSONTask中的“private int apiType=0;”是什么功能。你能解释一下我需要换成什么号码才能再加11个按钮吗?(我按照您的方法添加了其他按钮和功能)。我将非常感激。非常感谢。