如何从扩展AppCompatActivity访问getIntent()以扩展Application

时间:2018-02-22 08:02:29

标签: java android-intent android-activity

所以,我的活动A是:

public class imei extends AppCompatActivity {
//variables    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_imei);    
        ...    
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View arg0) {
                if(Long.parseLong(IMEI) == IMEI2){
                    IMEI .equals(IMEI2);
                    textView.setText("IMEI NUMBER : " + IMEI);
                    Bundle bundle = new Bundle();
                    bundle.putBoolean("key", true);
                    Intent intent = new Intent(imei.this, menu_utama.class);
                    intent.putExtras(bundle);
                    imei.this.startActivity(intent);
                }else{}

现在我想将布尔值从bundle传递给Activity B:

public class MyApplication extends Application {
private BeaconManager beaconManager;    
    //variables

    @Override
    public void onCreate() {
        super.onCreate();

        Intent intent = getIntent();
        Bundle bundle = intent.getExtras();
        final boolean success = bundle.getBoolean("key");    
        ..code
            if(success){
                do something
            }else{do something

getIntent()为红色,但当我更改为extends AppCompatActivity时,getIntent()更正。不知何故,它与onCreate(Bundle savedInstanceState)extends Application有什么关系,我该如何解决这个问题

1 个答案:

答案 0 :(得分:0)

所以我的问题是如何在活动类和aplication类之间传递值,首先尝试我使用的是使用getIntent()的Bundle,但是它没有用,因为getIntent()在activity类中,因为我想要在应用程序类中使用,所以我使用共享首选项并且它可以工作。

SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", MODE_PRIVATE);
                    SharedPreferences.Editor editor = pref.edit();
                    editor.putBoolean("masuk", true);
                    // Save the changes in SharedPreferences
                    editor.apply(); // commit changes

将它放在活动类中并获取应用程序类中的共享首选项:

SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", MODE_PRIVATE);
        SharedPreferences.Editor editor = pref.edit();
        editor.putBoolean("masuk", true);
        // Save the changes in SharedPreferences
        editor.apply(); // commit changes

然后只使用if(masuk){do what you want here}else{do what you want here} 解决。