所以我有两个活动,当我从第二个活动中选择一个项目到第一个活动时,我想传递一个从微调器获得的字符串。
第二项活动:
filetypeselected = parent.getItemAtPosition(position).toString();
Intent filetypeselectedintent = new Intent(advancedoptionsactivity.this,First.class);
filetypeselectedintent.putExtra("filetypeselected", filetypeselected);
startActivity(filetypeselectedintent);

第一项活动:
在onResume下:
String filetypeselected =null;
Intent filetypeselectedintent = this.getIntent();
if(filetypeselectedintent != null)
{
filetypeselected = filetypeselectedintent.getStringExtra("filetypeselected");
}
TextView test = (TextView) findViewById(R.id.test);
test.setText(filetypeselected);

但是当在第二个活动中从微调器中选择一个项目时,第一个活动会出现......我想要的是在第二个活动的微调器中选择项目后,意图被发送到活动1活动2仍留在我的屏幕上......
我正在考虑使用广播公司,如果我;我应该使用一个广播公司,有人可以告诉我如何在活动1中注册接收器吗?
谢谢!
更新:
以下是共享首选项的代码: 第一项活动: 在onResume()下
SharedPreferences AdvancedOptions = getSharedPreferences("AdvancedOptions",MODE_WORLD_READABLE);
filetypeselected = AdvancedOptions.getString(filetypeselected, null);
TextView test = (TextView) findViewById(R.id.test);
test.setText(String.valueOf(filetypeselected));

第二项活动:
在onchecklistener下
public void onItemSelected(AdapterView<?> parent, View view, int position, long id)
{
if (position != 0)
{
Toast.makeText(getBaseContext(), parent.getItemAtPosition(position) + " has been selected.", Toast.LENGTH_LONG).show();
filetypeselected = parent.getItemIdAtPosition(position);
SharedPreferences AdvancedOptions = getSharedPreferences("AdvancedOptions",MODE_WORLD_READABLE);
SharedPreferences.Editor AdvancedOptionsEditor = AdvancedOptions.edit();
AdvancedOptionsEditor.putLong("filetypeselected",filetypeselected);
AdvancedOptionsEditor.commit();
}
}
&#13;
可能它与filetypeselected的变量实例化有关吗?
下的第一个活动中的
public class First extends Activity {
String filetypeselected =null;
[...]
&#13;
和第二项活动
public class advancedoptionsactivity extends AppCompatActivity {
Long filetypeselected;
[...]
&#13;
问题是TextView测试(在第一个活动中)总是卡在文本上:&#34; null&#34;当它应该显示在微调器中选择的项目的id时(第二个活动)。
答案 0 :(得分:0)
我认为你可以通过一个简单的回调接口来做到这一点。让第一个活动实现:
public class FirstActivity extends Activity implements SecondActivity.Callback{
private String fileTypeSelected;
...
@Override
public void doStuff(String stuff){
if(stuff!= null)
{
this.fileTypeSelected= stuff;
}
}
@Override
public void onResume(){
TextView test = (TextView) findViewById(R.id.test);
test.setText(filetypeselected);
}
}
然后在第二个活动中:
public class SecondActivity extends Activity{
public interface Callback{
void doStuff(String stuff);
}
private Callback callback; //get reference to FirstActivity somehow
...
}
然后在第二个活动中,您只需致电:
callback.doStuff(parent.getItemAtPosition(position).toString());
第一个活动将获得它需要的东西,当你回到它时,它会更新它的视图。
编辑:或者,如果您知道两个活动未同时实例化,则可以将信息保存在Shared Preferences
的{{1}}中,然后检索SecondActivity
中的信息s FirstActivity