Как передать данные background второстепеного активити

Activity Lifecycle, Saving Activity State, Managing Tasks, Intent, Intent Filter
Ответить
Fima777
Сообщения: 30
Зарегистрирован: 14 сен 2012, 13:39

Как передать данные background второстепеного активити

Сообщение Fima777 » 22 сен 2012, 16:22

Добрый день, помогите плиз, не могу с"ориентироваться с putExtra как передать данные background второстепеного активити,
главному активити, тоесть если скажем, чтоб передать текст мы пишем так:

intent.putExtra("text", editText1.getText().toString());

и принимаем так:

Intent intent = getIntent();
String text = intent.getStringExtra("text");

textView1.setText( text );

а вот с background как дело обстоит не могу понять, то ли плохо ищу инфу
помогите плиз

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Как передать данные background второстепеного активити

Сообщение rezak90 » 22 сен 2012, 16:49

а как вы вообще получаете background activity?
его нужно получить от текущей разметки getBackground()
R.id.team
Политика на форуме запрещена

Fima777
Сообщения: 30
Зарегистрирован: 14 сен 2012, 13:39

Re: Как передать данные background второстепеного активити

Сообщение Fima777 » 22 сен 2012, 17:10

распишу всё подробно: есть главное активити с кнопкой, нажав на неё попадаешь на второе активити - в котором цвет фона меняется

public class Main2Activity extends Activity implements OnClickListener {

Button button1;
View Bground;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main2);

button1 = (Button)findViewById(R.id.button1);
button1.setOnClickListener(this);

Bground =(View) findViewById(R.id.Bground);
Bground.setBackgroundColor(Color.CYAN);
}

@Override
public void onClick(View v) {
Intent intent = new Intent(this,MainActivity.class);

startActivity(intent);

}
}


затем переходим (я сделаю ещё одну кнопку) в третье активити в котором есть editText, написав в нём что-то

public class Main3Activity extends Activity implements OnClickListener {

Button button1;
EditText editText1;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main3);

button1 = (Button)findViewById(R.id.button1);
button1.setOnClickListener(this);

editText1 = (EditText)findViewById(R.id.editText1);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main3, menu);
return true;
}

@Override
public void onClick(View v) {
Intent intent = new Intent (this,MainActivity.class);
intent.putExtra("text", editText1.getText().toString());
startActivity(intent);

}
}

мы возвращаемся в главное активити, в главном активити есть textView в котором должны вывестись тыкие данные:
тект который был введён прежде (это я сделал)
текст должен принять тот цвет, которым закращен фон во втором активити - как тут быть?

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Как передать данные background второстепеного активити

Сообщение rezak90 » 22 сен 2012, 17:47

задаёте разметке R.layout.main3 необходимый background и потом передаёте его в родительское окно. В чём именно загвоздка? во всём? или в получении цвета? или в передачи его? если в передачи то в каком виде у вас цвет хранится?
R.id.team
Политика на форуме запрещена

Fima777
Сообщения: 30
Зарегистрирован: 14 сен 2012, 13:39

Re: Как передать данные background второстепеного активити

Сообщение Fima777 » 22 сен 2012, 18:17

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

вот в таком состоянии у меня находится цвет
Bground =(View) findViewById(R.id.Bground);
Bground.setBackgroundColor(Color.CYAN);


проблема в том что (мне так кажется) я не могу его принять в главном активити и привязать его к тексту

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Как передать данные background второстепеного активити

Сообщение rezak90 » 22 сен 2012, 18:26

Color.CYAN там же значения в int если не ошибаюсь, так и передавайте int в активити
R.id.team
Политика на форуме запрещена

Fima777
Сообщения: 30
Зарегистрирован: 14 сен 2012, 13:39

Re: Как передать данные background второстепеного активити

Сообщение Fima777 » 22 сен 2012, 18:43

так я так и делаю, но почему то после запуска эмулятора он не запускается говорит ошибка

Intent intent = getIntent();
String text = intent.getStringExtra("text");
textView1.setText( "text" );

Intent intent1 = getIntent();
int Fcolor = intent1.getExtras().getInt("textColor");

textView1.setTextColor(Fcolor);

я так понимаю, что проблема с кодом
помогите плиз

Fima777
Сообщения: 30
Зарегистрирован: 14 сен 2012, 13:39

Re: Как передать данные background второстепеного активити

Сообщение Fima777 » 22 сен 2012, 19:24

у кого есть идеи?

Fima777
Сообщения: 30
Зарегистрирован: 14 сен 2012, 13:39

Re: Как передать данные background второстепеного активити

Сообщение Fima777 » 23 сен 2012, 07:47

И как же мне быть?

Jack_killer
Сообщения: 21
Зарегистрирован: 30 янв 2012, 21:15

Re: Как передать данные background второстепеного активити

Сообщение Jack_killer » 23 сен 2012, 09:26

не могу понять:
в третьем активити ты передаешь первому активити интент с текстом, а вот где ты из второго активити передаешь цвет я не вижу.
Может создать глобальную переменную (переменные) в первом активити и присваивать им значения из других активити.

Fima777
Сообщения: 30
Зарегистрирован: 14 сен 2012, 13:39

Re: Как передать данные background второстепеного активити

Сообщение Fima777 » 23 сен 2012, 13:49

main activity - принимает

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

button1 = (Button)findViewById(R.id.button1);
button2 = (Button) findViewById(R.id.button2);


button1.setOnClickListener(this);
button2.setOnClickListener(this);

Intent intent = getIntent();
String text = intent.getStringExtra("text");

textView1 = (TextView) findViewById(R.id.textView1);
textView1.setText( text );


второе активити отправляет

@Override
public void onClick(View v) {

Intent intent = new Intent();
switch (v.getId()) {
case R.id.red:
Bground.setBackgroundColor(Color.RED);
intent.putExtra("fcolor", Color.RED);
break;
case R.id.green:
Bground.setBackgroundColor(Color.GREEN);
intent.putExtra("fcolor", Color.GREEN);
break;
case R.id.yellow:
Bground.setBackgroundColor(Color.YELLOW);
intent.putExtra("fcolor", Color.YELLOW);
break;
case R.id.button1:
Intent intent1 = new Intent(this,MainActivity.class);
startActivity(intent1);
break;
}

}
}


третье активити тоже отправляет

@Override
public void onClick(View v) {
Intent intent = new Intent (this,MainActivity.class);
intent.putExtra("text", editText1.getText().toString());
startActivity(intent);

}


повторю вопрос : как придать цвет фона из 2 активити, тексту который передастся главному активити из третьего активити???

ребята нужно срочно..... пожалуйста

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Как передать данные background второстепеного активити

Сообщение rezak90 » 23 сен 2012, 14:10

Fima777 внятна можете сказать в чём проблема?
но почему то после запуска эмулятора он не запускается говорит ошибка
Если есть какая то ошибка то предоставляйте лог ошибок и код где она происходит.
Из выше предоставленного кода вы в интент кладёте цвет типа int, в чём проблема то?
R.id.team
Политика на форуме запрещена

Jack_killer
Сообщения: 21
Зарегистрирован: 30 янв 2012, 21:15

Re: Как передать данные background второстепеного активити

Сообщение Jack_killer » 23 сен 2012, 14:47

Если я правильно понял, то ты во втором активити создаешь интент и кладешь в него цвет, в третьем активити, ты создаешь еще один интент и кладешь в него текст и передаешь mainActivity т , НО ведь цвета в этом интенте нету.
Я еще не опытен, но наверное тебе в третьем активити нужно считать цвет из второй активити в промежуточную переменную, и добавить эту переменную в интент, который ты создаешь в третьей активити вместе с текстом , ну а в mainActivity считать обе переменные.


main activity - принимает

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

button1 = (Button)findViewById(R.id.button1);
button2 = (Button) findViewById(R.id.button2);


button1.setOnClickListener(this);
button2.setOnClickListener(this);

Intent intent = getIntent();
String text = intent.getStringExtra("text");
int color=intent.getIntExtra("fcolor");

textView1 = (TextView) findViewById(R.id.textView1);
textView1.setText( text );
textView1.setColor(color);


второе активити отправляет

@Override
public void onClick(View v) {

Intent intent = new Intent();
switch (v.getId()) {
case R.id.red:
Bground.setBackgroundColor(Color.RED);
intent.putExtra("fcolor", Color.RED);
break;
case R.id.green:
Bground.setBackgroundColor(Color.GREEN);
intent.putExtra("fcolor", Color.GREEN);
break;
case R.id.yellow:
Bground.setBackgroundColor(Color.YELLOW);
intent.putExtra("fcolor", Color.YELLOW);
break;
case R.id.button1:
Intent intent1 = new Intent(this,MainActivity.class);
startActivity(intent1);
break;
}

}
}


третье активити тоже отправляет
...
Intent intentOfMain2=getIntent();
int intermediate = getIntExtra("fcolor");

@Override
public void onClick(View v) {
Intent intent = new Intent (this,MainActivity.class);
intent.putExtra("text", editText1.getText().toString());
intent.putExtra("fcolor",intermediate);
startActivity(intent);

}

[/code]

Fima777
Сообщения: 30
Зарегистрирован: 14 сен 2012, 13:39

Re: Как передать данные background второстепеного активити

Сообщение Fima777 » 23 сен 2012, 15:14

после того как в главном активити я добавляю для получения:

intent = getIntent();
int Mycolor = intent.getExtras().getInt("fColor");
textView1.setTextColor(Mycolor);

мне выдаёт такое:

the apllication has stopped unexpectedly.Please try again

Fima777
Сообщения: 30
Зарегистрирован: 14 сен 2012, 13:39

Re: Как передать данные background второстепеного активити

Сообщение Fima777 » 23 сен 2012, 15:26

[quote="Jack_killer"]Если я правильно понял, то ты во втором активити создаешь интент и кладешь в него цвет, в третьем активити, ты создаешь еще один интент и кладешь в него текст и передаешь mainActivity т , НО ведь цвета в этом интенте нету.
Я еще не опытен, но наверное тебе в третьем активити нужно считать цвет из второй активити в промежуточную переменную, и добавить эту переменную в интент, который ты создаешь в третьей активити вместе с текстом , ну а в mainActivity считать обе переменные.


почему то не принимает getIntExtra
пишет

The method getIntExtra(String, int) in the type Intent is not applicable for the arguments (String)

Jack_killer
Сообщения: 21
Зарегистрирован: 30 янв 2012, 21:15

Re: Как передать данные background второстепеного активити

Сообщение Jack_killer » 23 сен 2012, 19:05

Fima777 писал(а):после того как в главном активити я добавляю для получения:

intent = getIntent();
int Mycolor = intent.getExtras().getInt("fColor");
textView1.setTextColor(Mycolor);

мне выдаёт такое:

the apllication has stopped unexpectedly.Please try again
Это потому что при первом запуске mainActivity у тебя еще нет данных в интенте. Сделай проверку:

Код: Выделить всё

intent = getIntent();
if(intent.getExtras()!=null){
    int Mycolor = intent.getExtras().getInt("fColor");
    textView1.setTextColor(Mycolor);
}
Fima777 писал(а):почему то не принимает getIntExtra
пишет

The method getIntExtra(String, int) in the type Intent is not applicable for the arguments (String)
там просто нужно добавлять данные по умолчанию, то-есть если при вызове этих данных там их не окажется, то будут применены данные по умолчанию.

Вот можешь посмотреть мою реализацию, может поможет. проект

Fima777
Сообщения: 30
Зарегистрирован: 14 сен 2012, 13:39

Re: Как передать данные background второстепеного активити

Сообщение Fima777 » 08 окт 2012, 21:00

решил всё с помощью startActivityForResult

Ответить