为了账号安全,请及时绑定邮箱和手机立即绑定

Java Android getApplicationContext() 从上一个类返回一个空对象

Java Android getApplicationContext() 从上一个类返回一个空对象

www说 2022-06-30 16:43:31
我正在尝试使用 getApplicationContext() 将用户从一个 java 类传递到另一个类。不幸的是,它不起作用并返回 null。我希望将用户信息从 LoginActivity 传递到 CustomMapActivity。用户信息存储在firebase中,这可能是一个问题吗?我相信清单是有序的。请看下文。  <activity android:name=".ui.MapCustomActivity"></activity>     <activity android:name=".ui.LoginActivity">         <intent-filter>             <action android:name="android.intent.action.MAIN" />             <category android:name="android.intent.category.LAUNCHER" />         </intent-filter>     </activity>    <activity android:name=".ui.RegisterActivity" />     <activity android:name=".ui.ProfileActivity" />    <activity android:name=".ui.MapCustomActivity"></activity>下面是登录活动,public class LoginActivity extends AppCompatActivity implements        View.OnClickListener      {       @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_login);        mEmail = findViewById(R.id.email);        mPassword = findViewById(R.id.password);        mProgressBar = findViewById(R.id.progressBar);        setupFirebaseAuth();        findViewById(R.id.email_sign_in_button).setOnClickListener(this);        findViewById(R.id.link_register).setOnClickListener(this);        hideSoftKeyboard();    }    private void showDialog(){        mProgressBar.setVisibility(View.VISIBLE);    }    private void hideDialog(){        if(mProgressBar.getVisibility() == View.VISIBLE){            mProgressBar.setVisibility(View.INVISIBLE);        }    }
查看完整描述

4 回答

?
万千封印

TA贡献1891条经验 获得超3个赞

要使用 Intent 将数据从一个活动传递到其他活动,请确保您执行了以下步骤。

  • 步骤 1 在源活动中创建一个新的 Explicit 或 Implicit Intent 对象。

  • 步骤 2 调用intent.putExtra(String key, Object data)方法在其中保存数据。

  • 步骤 3 在源活动中调用 startActivity(intent) 方法将意图传递给 android os。

  • 步骤 4 在目标活动中调用 getIntent() 方法。

在你的情况下,我认为你错过了第 2 步


查看完整回答
反对 回复 2022-06-30
?
婷婷同学_

TA贡献1844条经验 获得超8个赞

是否可以使用 abundle来给出活动之间的信息


Bundle bundle = new Bundle();

bundle.putInt("value_name", 0);// 0 = value

bundle.putString("value_name", "text"); // Text = value string


Intent intent = new Intent(this, SecondActivty.class);

intent.putExtras(bundle);

startActivity(intent);

并抓住你的第二个活动


public class SecondActivty extends AppCompatActivity {


@Override

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.second_activty);

    Toolbar toolbar = findViewById(R.id.toolbar);

    setSupportActionBar(toolbar);


    int value = savedInstanceState.getInt("value_name");

}


查看完整回答
反对 回复 2022-06-30
?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

在您当前的 Activity 中,创建一个新的 Intent:


String value="Hello world";

Intent i = new Intent(CurrentActivity.this, NewActivity.class);    

i.putExtra("key",value);

startActivity(i);

然后在新的 Activity 中,检索这些值:


Bundle extras = getIntent().getExtras();

if (extras != null) {

    String value = extras.getString("key");

    //The key argument here must match that used in the other activity

}

使用这种技术,您将能够在活动中传递变量


查看完整回答
反对 回复 2022-06-30
?
ABOUTYOU

TA贡献1812条经验 获得超5个赞

您正在使用 getApplicationContext 但也许您正在尝试使用Activity 中的getApplication方法。我不建议使用这种方法将对象从一个活动传递到另一个活动。您应该使用 Intent 对象。看看官方文档


查看完整回答
反对 回复 2022-06-30
  • 4 回答
  • 0 关注
  • 323 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号