Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.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 在扩展按钮类中上下文是什么意思?上下文的默认值是什么?_Java_Android_Class_Android Context_Extended Events - Fatal编程技术网

Java 在扩展按钮类中上下文是什么意思?上下文的默认值是什么?

Java 在扩展按钮类中上下文是什么意思?上下文的默认值是什么?,java,android,class,android-context,extended-events,Java,Android,Class,Android Context,Extended Events,这是我的扩展按钮类` import android.content.Context; import android.widget.Button; public class Hotel extends Button{ String id; String name; String company_id; public Hotel(Context context, String id, String name, String company_id) {

这是我的扩展按钮类`

import android.content.Context;
import android.widget.Button;

public class Hotel extends Button{
    String  id;
    String name;
    String company_id;

    public Hotel(Context context, String id, String name, String company_id) {
        super(context);
        this.id = id;
        this.name = name;
        this.company_id = company_id;
    }
}
扩展按钮类构造参数中的上下文是什么

我想将这个类用作另一个类中的数组,但我不确定应该在上下文中编写什么?İam尝试从soap服务获取酒店按钮,并使用下面的代码。此GetHotels方法位于另一个类中。我只是对上下文的事情感到困惑。请帮帮我

 import android.content.Context;

import org.json.JSONArray;
import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapPrimitive;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;

/**
 * Created by arzucaki on 09/05/2017.
 */

public class ServiceManager {
    private static final String METHOD_NAME = "GetHotels";
    private static final String NAMESPACE = "http://tempuri.org/";
    private static final String SOAP_ACTION = "http://tempuri.org/GetHotels";
    private static final String URL = "http://192.168.1.170/HotelApps_WebServices.asmx";
    public static Context mContext;
    SoapObject soapObject;
    SoapSerializationEnvelope soapSerializationEnvelope;
    HttpTransportSE httpTransportSE;

    public Hotel[] GetHotels(int Company_id) {

        soapObject = new SoapObject(NAMESPACE, METHOD_NAME);
        soapObject.addProperty("Company_id", Company_id);

        soapSerializationEnvelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
        soapSerializationEnvelope.dotNet = true;
        soapSerializationEnvelope.setOutputSoapObject(soapObject);

        httpTransportSE = new HttpTransportSE(URL);
        httpTransportSE.debug = true;

        Hotel hotels[]=new Hotel[6];
        try {
            httpTransportSE.call(SOAP_ACTION, soapSerializationEnvelope);
            SoapPrimitive soapPrimitive=(SoapPrimitive)soapSerializationEnvelope.getResponse();
            JSONArray jsonHotels = new JSONArray(soapPrimitive.toString());

            for (int i=0; i<6; i++) {
                hotels[i]=new Hotel( mContext, jsonHotels.getJSONObject(i).getString("Hotel_id"),jsonHotels.getJSONObject(i).getString("Hotel_Name"), jsonHotels.getJSONObject(i).getString("Company_id"));

            }
            return hotels;
        } catch (Exception ex) {
            ex.printStackTrace();
            return hotels;
        }
    }

}
导入android.content.Context;
导入org.json.JSONArray;
导入org.ksoap2.SoapEnvelope;
导入org.ksoap2.serialization.SoapObject;
导入org.ksoap2.serialization.SoapPrimitive;
导入org.ksoap2.serialization.SoapSerializationEnvelope;
导入org.ksoap2.transport.HttpTransportSE;
/**
*由arzucaki于2017年5月9日创建。
*/
公共类服务管理器{
私有静态最终字符串方法\u NAME=“GetHotels”;
私有静态最终字符串命名空间=”http://tempuri.org/";
私有静态最终字符串SOAP_ACTION=”http://tempuri.org/GetHotels";
私有静态最终字符串URL=”http://192.168.1.170/HotelApps_WebServices.asmx";
公共静态语境;
SoapObject SoapObject;
SoapSerializationEnvelope SoapSerializationEnvelope;
HttpTransportSE-HttpTransportSE;
公共酒店[]GetHotels(国际公司id){
soapObject=新的soapObject(名称空间、方法名称);
addProperty(“公司id”,公司id);
soapSerializationEnvelope=新的soapSerializationEnvelope(SoapEnvelope.VER11);
soapSerializationEnvelope.dotNet=true;
soapSerializationEnvelope.setOutputSoapObject(soapObject);
httpTransportSE=新的httpTransportSE(URL);
httpTransportSE.debug=true;
酒店酒店[]=新酒店[6];
试一试{
调用(SOAP\u操作,soapSerializationEnvelope);
SoapPrimitive SoapPrimitive=(SoapPrimitive)soapSerializationEnvelope.getResponse();
JSONArray jsonHotels=新的JSONArray(soapPrimitive.toString());

对于(int i=0;i更改ur ServiceManager类的方法签名,如下所示:

public class ServiceManager {
    private static final String METHOD_NAME = "GetHotels";
    private static final String NAMESPACE = "http://tempuri.org/";
    private static final String SOAP_ACTION = "http://tempuri.org/GetHotels";
    private static final String URL = "http://192.168.1.170/HotelApps_WebServices.asmx";
    public static Context mContext;
    SoapObject soapObject;
    SoapSerializationEnvelope soapSerializationEnvelope;
    HttpTransportSE httpTransportSE;
public ServiceManager(Context context){
    this.mContext = context;//now u can pass mContext to Hotel Constructor
}
    public Hotel[] GetHotels(int Company_id) {

        soapObject = new SoapObject(NAMESPACE, METHOD_NAME);
        soapObject.addProperty("Company_id", Company_id);

        soapSerializationEnvelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
        soapSerializationEnvelope.dotNet = true;
        soapSerializationEnvelope.setOutputSoapObject(soapObject);

        httpTransportSE = new HttpTransportSE(URL);
        httpTransportSE.debug = true;

        Hotel hotels[]=new Hotel[6];
        try {
            httpTransportSE.call(SOAP_ACTION, soapSerializationEnvelope);
            SoapPrimitive soapPrimitive=(SoapPrimitive)soapSerializationEnvelope.getResponse();
            JSONArray jsonHotels = new JSONArray(soapPrimitive.toString());

            for (int i=0; i<6; i++) {
                hotels[i]=new Hotel( mContext, jsonHotels.getJSONObject(i).getString("Hotel_id"),jsonHotels.getJSONObject(i).getString("Hotel_Name"), jsonHotels.getJSONObject(i).getString("Company_id"));

            }
            return hotels;
        } catch (Exception ex) {
            ex.printStackTrace();
            return hotels;
        }
    }

}
 import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.GridLayout;

public class Hotels extends AppCompatActivity {
    ServiceManager service=new ServiceManager(getApplicationContext());
    Hotel hotels[];
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_hotels);
        GridLayout glHotels=(GridLayout) findViewById(R.id.glHotels);

        Thread getHotels=new Thread(new Runnable() {
            @Override
            public void run() {
                hotels=service.GetHotels(1);
            }
        });
        getHotels.start();
        for (int i=0; i<hotels.length; i++) {
            glHotels.addView(hotels[i]);
        }
    }
}
公共类服务管理器{
私有静态最终字符串方法\u NAME=“GetHotels”;
私有静态最终字符串命名空间=”http://tempuri.org/";
私有静态最终字符串SOAP_ACTION=”http://tempuri.org/GetHotels";
私有静态最终字符串URL=”http://192.168.1.170/HotelApps_WebServices.asmx";
公共静态语境;
SoapObject SoapObject;
SoapSerializationEnvelope SoapSerializationEnvelope;
HttpTransportSE-HttpTransportSE;
公共服务管理器(上下文){
this.mContext=context;//现在您可以将mContext传递给酒店构造函数
}
公共酒店[]GetHotels(国际公司id){
soapObject=新的soapObject(名称空间、方法名称);
addProperty(“公司id”,公司id);
soapSerializationEnvelope=新的soapSerializationEnvelope(SoapEnvelope.VER11);
soapSerializationEnvelope.dotNet=true;
soapSerializationEnvelope.setOutputSoapObject(soapObject);
httpTransportSE=新的httpTransportSE(URL);
httpTransportSE.debug=true;
酒店酒店[]=新酒店[6];
试一试{
调用(SOAP\u操作,soapSerializationEnvelope);
SoapPrimitive SoapPrimitive=(SoapPrimitive)soapSerializationEnvelope.getResponse();
JSONArray jsonHotels=新的JSONArray(soapPrimitive.toString());

对于(int i=0;ipass getApplicationContext()作为context中的参数,您的确切意思是什么?我的意思是:Hotel Hotel=new Hotel(getApplicationContext(),…)好的,但是这个类没有活动,我使用这个类只是为了服务管理。这就是它不起作用的原因。getApplicationContext()不需要活动在普通类中正常工作错误:(8,28)错误:类ServiceManager中的构造函数ServiceManager无法应用于给定类型;必需:找到上下文:无参数原因:实际参数列表和形式参数列表长度不同检查更新的Activty类并相应地进行更改它给出了运行时错误“应用程序已停止”,但我在调试模式下控制阵列。应用程序停止,但它会以阵列的形式返回酒店。上传投票如果你觉得有帮助,你需要自己解决其他错误;)编码愉快
 import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.GridLayout;

public class Hotels extends AppCompatActivity {
    ServiceManager service=new ServiceManager(getApplicationContext());
    Hotel hotels[];
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_hotels);
        GridLayout glHotels=(GridLayout) findViewById(R.id.glHotels);

        Thread getHotels=new Thread(new Runnable() {
            @Override
            public void run() {
                hotels=service.GetHotels(1);
            }
        });
        getHotels.start();
        for (int i=0; i<hotels.length; i++) {
            glHotels.addView(hotels[i]);
        }
    }
}