【问题标题】:Unable to access changed value of variable from another class in android studio无法从android studio中的另一个类访问变量的更改值
【发布时间】:2016-03-18 21:13:23
【问题描述】:

我创建了两个类,一个是 LoginSignupActivity.java,另一个是 ProfileActivity.java

LoginSignUpActivity.java---

        public class LoginSignupActivity extends AppCompatActivity {

          **  static string id;     **
            public void getUserDetailsFromFB() {
                    GraphRequest request = GraphRequest.newMeRequest(
                            AccessToken.getCurrentAccessToken(),
                            new GraphRequest.GraphJSONObjectCallback() {
                                @Override
                                public void onCompleted(final JSONObject object, GraphResponse response) {
                                    try{
                                    **    id=response.getJSONObject().getString("id");**
            }
catch (JSONException e) {
                            //If anything goes wrong
                            Log.e("my",e.toString());
                        }
            })
            }
            }
            }

ProfileActivity.java ---

public class ProfileActivity extends AppCompatActivity {
 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_profile);
  ImageView imageView = (ImageView) findViewById(R.id.dp);
        if(imageView!=null){

               **  String fbid = (new LoginSignupActivity).getUserDetailsFromFB().id;    **
            if(fbid!=null){
                 Glide.with(this).load("http://graph.facebook.com/1615242245409408/picture?type=large").into(imageView);
                //Glide.with(this).load("http://graph.facebook.com/" + "1675239799409652" + "/picture?type=large").into(imageView);
                Log.d("mayank", LoginSignupActivity.id);
            }
            else{
                Log.d("mayank","null facebook id");
            }
        }
        else {
            Log.d("mayank","null image view");
        }
}
}

当我在 ProfileActivity.java 中访问 id 时 它显示空值。 我想访问在 LoginSignupActivity.java 中获得的值。

请帮忙。 谢谢

【问题讨论】:

  • 您的异常块在哪里?此页面是否缺少它?你在吃吗?
  • @WalterM 现在我已经编辑了
  • 是否抛出异常?你能在调用response.getJSONObject().getString("id")之后立即确认id不为空吗?
  • 是的,我已经在那里打印了
  • 是的,我在调用后打印了 id id not null

标签: java android static


【解决方案1】:

做:

public static  String id="NA";

如果您的代码行没有收到 id,您将得到 NA:

  id=response.getJSONObject().getString("id");

正如您在评论中所说,您应该在获取后才使用 id 的值

 id=response.getJSONObject().getString("id");

我认为你应该只在获得 id 值后启动 ProfileActivity.java,如下所示:

id=response.getJSONObject().getString("id");
Intent intent=new Intent(LoginSignupActivity.this,ProfileActivity.class);
startActivity(intent);

谢谢

【讨论】:

  • 是的,它给了 NA 但是当我在 id=response.getJSONObject().getString("id"); 之后打印 id 时它提供了我在 profileactivity 中需要的正确 id 我需要那个值
  • 你稍后会得到价值,延迟后,我很快就会更新答案。
  • 检查答案更新应该有帮助,并使用字符串,谢谢,让我知道
  • 当时不想开始活动
  • 获取后必须使用id的值。否则无法在获取之前使用值。
【解决方案2】:

尝试将 id 公开,我认为你应该把它扔掉 LoginSignUpActivity.id

如果只登录一次,我建议您使用 SharedPreference。

【讨论】:

  • 我已经公开并写了 String fbid = LoginSignupActivity.id;但它仍然给出空值我想要在该方法内更改的更改值
  • 所以使用SharedPreference这是最好的方法。
  • 但我会在 sharedpreference 中遇到同样的问题 我将初始化 sharedpreference 与 id 相同并将值放入方法中但是当我从 ProfileActivity 调用 sharedpreference 时,它​​会给出与 id 相同的值我想要的值是调用 response.getJSONObject().getString("id"); 后得到的;
猜你喜欢
  • 2016-10-18
  • 1970-01-01
  • 2021-05-20
  • 2013-09-25
  • 1970-01-01
  • 2020-03-25
  • 1970-01-01
  • 2023-04-07
相关资源
最近更新 更多