Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.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
Android上下文错误_Android_Android Context - Fatal编程技术网

Android上下文错误

Android上下文错误,android,android-context,Android,Android Context,我有以下课程: package com.somedomain.enigma; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.List; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org

我有以下课程:

package com.somedomain.enigma;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;

import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.util.Log;

public class APICall {
    private String DEBUG_TAG = "enigma";

    public void register(Context context, Intent intent) {
        final String URL = "http://somedomain.com:8888/register";

        String registrationId = intent.getStringExtra("registration_id");
        String error = intent.getStringExtra("error");
        String unregistered = intent.getStringExtra("unregistered"); 

        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost(URL);

        // Send a POST to the server to register the device
        if (registrationId != null) {
            List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
            nameValuePairs.add(new BasicNameValuePair("registrationId", registrationId));
            try {
                httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
                HttpResponse response = httpclient.execute(httppost);
                int responseCode = response.getStatusLine().getStatusCode();
                if(responseCode == 200) {
                    SharedPreferences settings = context.getPreferences(Context.MODE_PRIVATE);
                    SharedPreferences.Editor editor = settings.edit();
                    editor.putString("registrationId", registrationId);
                    editor.commit();
                    Log.d(DEBUG_TAG, "Device registered successfully");
                } else {
                    Log.d(DEBUG_TAG, "Device registration failed");
                }
            } catch (UnsupportedEncodingException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (ClientProtocolException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

        if (unregistered != null) {
            // get old registration ID from shared preferences
            // notify 3rd-party server about the unregistered ID
            Log.d(DEBUG_TAG, "Unregister request");
        } 

        if (error != null) {
            if ("SERVICE_NOT_AVAILABLE".equals(error)) {
               // optionally retry using exponential back-off
                Log.d(DEBUG_TAG, "Service not available");
            } else {
                // Unrecoverable error, log it
                Log.d(DEBUG_TAG, "Received error: " + error);
            }
        }
    }
}
我使用
context-context=getApplicationContext()从上一个方法传入上下文有什么办法可以解决这个问题吗?

试试看

SharedPreferences settings = context.getSharedPreferences("MyPreferencesName",Context.MODE_PRIVATE);
直接从中,没有
getPreferences
方法,但是有一个
getSharedReferences()
方法

请注意,如果使用默认的SharedReferences文件

编辑:只是
活动的一部分。这种方法实际上是一种方便的方法

这只是调用底层的getSharedReferences(String,int) 方法,将此活动的类名作为首选项传入 名字

因此,如果您完全确定
context
是活动的实例,则可以更改方法声明:

public void register(Activity activity, Intent intent) {
或铸造

SharedPreferences settings = ((Activity)context).getPreferences(Context.MODE_PRIVATE);
但是,如果
context
不是活动的实例,则您必须依赖其他方法来访问首选项。

请尝试

SharedPreferences settings = context.getSharedPreferences("MyPreferencesName",Context.MODE_PRIVATE);
直接从中,没有
getPreferences
方法,但是有一个
getSharedReferences()
方法

请注意,如果使用默认的SharedReferences文件

编辑:只是
活动的一部分。这种方法实际上是一种方便的方法

这只是调用底层的getSharedReferences(String,int) 方法,将此活动的类名作为首选项传入 名字

因此,如果您完全确定
context
是活动的实例,则可以更改方法声明:

public void register(Activity activity, Intent intent) {
或铸造

SharedPreferences settings = ((Activity)context).getPreferences(Context.MODE_PRIVATE);

但是,如果
context
不是活动的一个实例,您将不得不依赖其他方法来访问首选项。

Ahh好的,我读得不够多,我看到了这个代码示例,但我想这只是一个活动。”SharedPreferences sharedPref=getActivity().getPreferences(Context.MODE_PRIVATE);'@ρцσѕρєK仅是一个活动方法。@user2004988这只是活动的一部分,所以是的,你是对的:)@user2004988不客气:-)请随意接受这个答案(单击镂空的复选标记)。啊,好吧,我读得不够,我看到了这个代码示例,但我想它只是为了一个活动SharedPreferences sharedPref=getActivity().getPreferences(Context.MODE_PRIVATE);'@ρцσѕρєK只有一个活动方法。@user2004988这只是活动的一部分,所以是的,你是对的:)@user2004988不客气:-)请随意接受这个答案(单击镂空的复选标记)。