您好
我想知道这个概念是如何在android
中实现的活动1 - 至 - - - >活动2-至 - 。>活动3 - 至 - - > 活性2
但是这样做了
我从
传递数据活动1 - - >活动2- - >我没有从Activity2传递数据 - - > Activity3
立即
如果我导航回Activity2- - from - - Activity3
周期必须是::
活动1 - 至 - - - >活动2-至 - 。>活动3 - 至 - - > 活性2
我希望我的描述清楚
如何修改代码来实现这个
MainActivity.java
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity1);
Button BTN=(Button) findViewById(R.id.activity3button3);
BTN.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent INT=new Intent(MainActivity.this,Activity2.class);
INT.putExtra("hi", "HI");
startActivity(INT);
}
});
}
}
Activity2.java
public class Activity2 extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity2);
Button BTN=(Button) findViewById(R.id.activity3button3);
BTN.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent INT=new Intent(Activity2.this,Activity3.class);
startActivity(INT);
}
});
}
}
Activity3.java
public class Activity3 extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity3);
Button BTN=(Button) findViewById(R.id.activity3button3);
BTN.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent INT=new Intent(Activity3.this,Activity2.class);
startActivity(INT);
}
});
}
}
答案 0 :(得分:3)
您可以使用的选项很少。
方法1:
在Activty 2中,您可以使用onSaveInstanceIndtance()保存一些数据。 在onDestroy之前调用此函数。在onCreate()中你可以 使用onRetroreInstanceState()
检索保存的数据
方法2:
您可以将数据保存在sharedPrefernces中。在任何活动的任何一点 您可以将数据保存在sharedPreference中。
方法3:
您可以使用“singleTask”标志启动您的activity2。来吧 从Activity 3返回到Activty 2,将调用前一个实例 从堆栈。在这种情况下,不会为Activtiy 2调用onCreate()。 而是将调用onNewIntent()。
您可以根据需要使用其中一种。
答案 1 :(得分:2)
可能会有所帮助
您有R.layout.activity1
,R.layout.activity2
和R.layout.activity3
,因为您需要为所有人提供单独的按钮,但您已为所有人提供了R.id.activity3button3
一个按钮,因此最好创建三个按钮三个活动的按钮
Button BTN=(Button) findViewById(R.id.activity1button1);
BTN.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent ide = new Intent(MainActivity.this,Activity2.class);
ide .putExtra("hi", "HI");
ide.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(ide);
}
});
Button BTN=(Button) findViewById(R.id.activity2butto2);
BTN.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent ide = new Intent(Acitvity2.this,Acitvity3.class);
ide .putExtra("hi", "HI");
ide.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(ide);
}
});
Button BTN=(Button) findViewById(R.id.activity3button3);
BTN.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent ide = new Intent(Acitvity3.this,Acitvity2.class);
ide .putExtra("hi", "HI");
ide.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(ide);
}
});
答案 2 :(得分:0)
解决方案1 是保持传递值:
Intent INT=new Intent(Activity2.this,Activity3.class);
INT.putExtra("hi", getIntent().getStringExtra("hi","error");
startActivity(INT);
再次
Intent INT=new Intent(Activity3.this,Activity2.class);
INT.putExtra("hi", getIntent().getStringExtra("hi","error");
startActivity(INT);
解决方案2 是创建一个静态变量,该变量将保存值,并且可以在整个应用程序中访问。
public class DataHolder {
public static String hi;
}
并且在Activity2中而不是从Bundle中获取值,只需从DataHolder中获取它:
String hi = DataHolder.hi;
这是我首先想到的两件事。