Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.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 无法从mainactivity访问数组列表的值_Android_Json_Facebook_Arraylist - Fatal编程技术网

Android 无法从mainactivity访问数组列表的值

Android 无法从mainactivity访问数组列表的值,android,json,facebook,arraylist,Android,Json,Facebook,Arraylist,我有一个程序,它使用Facebook Graph API从Facebook图像获取各种帖子的帖子ID。以下是我用于此的代码: oncreate() public类MainActivity扩展了AppCompatActivity{ //变量声明 文本视图文本视图1; public ArrayList postIds=new ArrayList();//用于存储各种post ID的数组 ArrayList ImageId=new ArrayList();//具有各种ImageURL ImageVie

我有一个程序,它使用Facebook Graph API从Facebook图像获取各种帖子的帖子ID。以下是我用于此的代码:

oncreate()

public类MainActivity扩展了AppCompatActivity{
//变量声明
文本视图文本视图1;
public ArrayList postIds=new ArrayList();//用于存储各种post ID的数组
ArrayList ImageId=new ArrayList();//具有各种ImageURL
ImageView img1;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
sdkinInitialize(getApplicationContext());
setContentView(R.layout.activity_main);
Toolbar Toolbar=(Toolbar)findViewById(R.id.Toolbar);
设置支持操作栏(工具栏);
getPosts();
System.out.println(“主活动中的PostIDS值:“+PostIDS.toString()”);
System.out.println(“从主活动执行完毕”);
}//一次创建
Getposts():

public void getPosts()
{
GraphRequest请求=GraphRequest.newGraphPathRequest(
A.
“/InternationalChalunion”,
新建GraphRequest.Callback(){
@凌驾
未完成公共空白(图形响应){
//在这里插入您的代码
System.out.println(“响应::”+String.valueOf(Response.getJSONObject());
JSONObject jsRoot=response.getJSONObject();
JSONObject jsArr1=null;
试一试{
jsArr1=jsRoot.getJSONObject(“posts”);
}捕获(JSONException e){
e、 printStackTrace();
}
JSONArray arr1=jsArr1.optJSONArray(“数据”);
//迭代JSONArray并将值存储到不同的
对于(int i=0;i

当我尝试在getposts()函数中访问postId的值时,我可以看到所有的值都设置正确。但是当我尝试从main方法或任何其他方法访问postsIds[]时,是同一个类postId[]是一个空数组。您能告诉我这里缺少什么吗。

查看您的代码,我们可以确认您正在执行一个异步调用,以获取getPosts()中所需的数据;

最好尽可能使用onComplete()回调中获取的数据,因为您永远不知道异步任务将执行多长时间,因为它取决于网络/处理器/大量计算(如果内部存在)


在Android中检查此通用异步任务

在尝试从其他方法访问请求之前,是否确保请求已完成?
public class MainActivity extends AppCompatActivity {

    //Variable Declarations
    TextView textView1;
    public  ArrayList<String> postIds = new ArrayList<>();//array to store various post ids
    ArrayList<String> imageIds = new ArrayList<>();//has the various imageURLs
    ImageView img1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        FacebookSdk.sdkInitialize(getApplicationContext());
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        getPosts();
        System.out.println("PostIDS value in Main Activity:"+postIds.toString());
        System.out.println("Done Execution From Main Activity");

    }//onCreate
public void getPosts()
    {
        GraphRequest request = GraphRequest.newGraphPathRequest(
                a,
                "/internationalchaluunion",
                new GraphRequest.Callback() {
                    @Override
                    public void onCompleted(GraphResponse response) {
                        // Insert your code here
                        System.out.println("Response::" + String.valueOf(response.getJSONObject()));
                        JSONObject jsRoot = response.getJSONObject();
                        JSONObject jsArr1 = null;
                        try {
                            jsArr1 = jsRoot.getJSONObject("posts");
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                        JSONArray arr1 = jsArr1.optJSONArray("data");

                        //iterate JSONArray and store the values to different
                        for(int i=0; i < arr1.length(); i++)
                        {
                            try {
                                JSONObject jsonObject = arr1.getJSONObject(i);
                                //System.out.println("Id"+i+":"+jsonObject.optString("id"));
                                String str = jsonObject.optString("id");
                                str=str.substring(str.indexOf("_")+1,str.length());
                                postIds.add(str);
                            }//try
                            catch (JSONException e) {
                                e.printStackTrace();
                            }//catch


                        }//for

                        /
                }//onCompletedMethod
                });
        Bundle parameters = new Bundle();
        parameters.putString("fields", "posts");
        request.setParameters(parameters);
        request.executeAsync();


    }