Помоги мне с этими намерениями - PullRequest
0 голосов
/ 15 ноября 2018

Я новичок в андроид студии и прохожу намерения. Я создаю регистрационное приложение, которое берет информацию о пользователях в первых 4 действиях и отображает их в соответствующих представлениях 5-го упражнения.

Мое приложение содержит личные, профессиональные, адресные и другие подробные действия, которые можно извлечь из редактируемых текстов и затем отобразить на самом последнем экране.

Я могу получать данные только на следующем последовательном экране, но не могу сохранить их и добавить к последнему действию позже.

Можно ли как-нибудь выполнить сохранение и поиск, используя только намерения между двумя действиями, которые не являются последовательными друг для друга? Любая помощь будет оценена ... !!

Ответы [ 5 ]

0 голосов
/ 15 ноября 2018

Используйте SharedPreference для сохранения ваших данных, используя пары ключ-значение. И тогда вы можете получить данные в любой деятельности, используя соответствующий ключ. Просто убедитесь, что вы используете правильный ключ для сохранения переменной.

public SharedPreferences sharedPref;
public SharedPreferences.Editor editor; 
sharedPref = getSharedPreferences("name_of_your_preference", Context.MODE_PRIVATE);
editor = sharedPref.edit();

editor.putString("key" , "value");    //use to save a value
editor.commit();

sharedPref.getString("key", null);    // retrieve the data
0 голосов
/ 15 ноября 2018

Существует много способов передачи данных. Один простой и эффективный способ реализовать. Создать открытый класс в вашем пакете. В этом классе объявите ваши значения как статические, как показано ниже.

public class MyDataClass {
public static String name;
public static String userid;
}

вы можете передавать значения, как показано ниже

MyDataClass myobj=new MyDataClass();
myobj.name="Jhon";
myobj.username="Jhon@gmail.com";

Для извлечения значения из любой точки деятельности или фрагмента используйте это

String val=myobj.name;
String val=myobj.username;
0 голосов
/ 15 ноября 2018

Да, вы можете сделать это, отправив данные из одного действия в другое в цепочке.

Допустим, ваше приложение начинается с ActivityOne , затем переходит на ActivityTwo , затем на ActivityThree , затем на ActivityFour , затем на ActivityFive и отправляет данные здесь в ActivityFive. Каждое действие имеет EditText для ввода данных и кнопку, при нажатии которой происходит переход к следующему действию.

В ActivityOne создать, а затем запустить намерение по нажатию кнопки, т. Е. Внутри onClick ():

Intent i = new Intent(ActivityOne.this,ActivityTwo.class);
i.putExtra("Name",edittext.getText().toString());//get sting from 1st edittext
startActivity(i);

Теперь ваше второе действие началось, т.е. ActivityTwo .

В этих действиях метод onCreate () создает Intent Intent a = getIntent();

Теперь в методе onClick для кнопки этого действия сделайте следующее:

Intent i = new Intent(ActivityTwo.this,ActivityThree.class);
i.putExtra("Address",edittextTwo.getText().toString());//This line fetches the data from the activities edittext
i.putExtra("Name", a.getStringExtra("Name"));//This line fetches the data from the intent which called this activity.
startActivity(i);

Теперь в третьем действии, которое было начато, т.е. ActivityThree .

Сделайте то же самое в действиях с методом onCreate (), т.е. создайте Intent Intent a = getIntent();

Теперь в методе onClick для кнопки этого действия сделайте то же самое, что вы делали ранее, но также получите данные, переданные из предыдущего действия:

Intent i = new Intent(ActivityThree.this,ActivityFour.class);
i.putExtra("email",edittextThree.getText().toString());//This line fetches the data from the activity's edittext
i.putExtra("Name", a.getStringExtra("Name"));//This line fetches the data from the intent which called this activity.
i.putExtra("Address", a.getStringExtra("Address"));//This line fetches the data from the intent which called this activity.
startActivity(i);

Продолжайте это во всех действиях, и в конце вы сможете получить все данные в последнем упражнении.

Логика здесь в том, чтобы передавать данные из одного действия в другое и продолжать добавлять данные на ходу.

0 голосов
/ 15 ноября 2018
    You can use singleton class 
    Create one model class and add the data from that four activites

        public class MySingleton {
        private UserModel user_details;

        private static MySingleton ourInstance = new MySingleton();

        public static MySingleton getInstance() {
            return ourInstance;
        }

        private MySingleton() {
        }

     public void setUserDetails(UserModel news) {
            this.user_details= news;
        }

        public UserModel getUserDetails() {
            return user_details;
        }
    }


//add user details
MySingleton mysingleton= MySingleton .getInstance();
mysingleton.setUserDetails(userdetails); // userdetails - model class object
0 голосов
/ 15 ноября 2018

Я также новичок, но почему бы не создать One Activity, которая содержит DataModels, собирает UserInformation внутри Fragments и устанавливает их в Activity на nextBtnClick?

Примерно так:

final Button nextFragmentButton = (Button) findViewById(R.id.button_id);
button.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
              ((MyActivity)getActivity()).setUserDataModel(dataModel)
      });

Разве это не плохой дизайн, если у вас много дел и выкладываете через них данные? Если бы вы использовали фрагменты, корневая активность могла бы содержать все данные и упрощала бы обработку данных.

...