麻烦传递并从我的意图中获取数据

时间:2017-12-05 21:32:20

标签: java android-studio

我试图制作一个非常简单的应用来帮助我的女朋友感觉更安全。 我真的很擅长这一点,一点点的帮助会有很长的路要走。我一直在尝试使用意图,我觉得我现在非常接近手头的解决方案,我只需要一些帮助。

因此,打开页面应该等到您的共享偏好设置中有数据,然后它才会对其进行操作。

第二页应该从EditTexts中获取一些数据并将其存储在您的意图中。但是出于某种原因,我的数据没有被存储,当我从意图中提取某些东西时,它就是""。

CLASS 1:

public void ActivateAlarm(View view){
        Bundle myBundle = getIntent().getExtras();
        if(myBundle == null){
            Log.i("The bundle is empty!", "Smashing success!");
        }

        else{
            SharedPreferences sharedPreferences = this.getSharedPreferences("com.example.jackson.distressalarm", Context.MODE_PRIVATE);
            String NumberToCall = sharedPreferences.getString("CallNumber", "");
            String TextOne = sharedPreferences.getString("1Text", "");
            String TextTwo = sharedPreferences.getString("2Text", "");
            String TextThree = sharedPreferences.getString("3Text", "");


            Button myButton = (Button) findViewById(R.id.button);
            myButton.setText(TextOne);

            Log.i("MY NUMBER TO CALL", NumberToCall);
            /*Take in the data from the settings. Check it for consistency.
            1)Are the numbers empty?
            2)Is the number 911 or a 7 digit number?
            3)Do they have a passcode?
            4)Is the number real? No philisophical BS
             */
        }

    }

CLASS 2:

public void GoToAlarm(View view){

        EditText NumberToCall = (EditText) findViewById(R.id.callNumber);
        EditText text1 = (EditText) findViewById(R.id.textNumOne);
        EditText text2 = (EditText) findViewById(R.id.textNumTwo);
        EditText text3 = (EditText) findViewById(R.id.textNumThree);

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

        intent.putExtra("callNumber", NumberToCall.getText().toString());
        intent.putExtra("1Text", text1.getText().toString());
        intent.putExtra("2Text", text2.getText().toString());
        intent.putExtra("3Text", text3.getText().toString());


        startActivity(intent);

    }

1 个答案:

答案 0 :(得分:0)

我认为问题来自于IntentSharedPreferences之间的混淆。

Intent是一种将数据从一个活动传递到另一个活动的方法。您正在第2类中正确传递数据,但是您没有在第1类中检索它。以下是您可以这样做的方法:

        String NumberToCall = intent.getStringExtra("CallNumber");
        String TextOne = intent.getStringExtra("1Text");
        String TextTwo = intent.getStringExtra("2Text");
        String TextThree = intent.getStringExtra("3Text");

SharedPreferences是一种保存用户数据的方法。如果除了在活动之间传递数据之外还要保存数据,则需要使用以下代码将其添加到SharedPreferences

SharedPreferences preferences = this.getSharedPreferences("com.example.jackson.distressalarm", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();

editor.putString("callNumber", NumberToCall.getText().toString());
editor.putString("1Text", text1.getText().toString());
editor.putString("2Text", text2.getText().toString());
editor.putString("3Text", text3.getText().toString());

editor.apply();

您可以使用在第1课中使用的代码检索值。