修改的
好的,真正的简化版本,让我们称之为我的Activity2
public class test {
String username, id;
TextView view1, view2;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
view1 = (TextView)findViewById(R.id.textView1);
view2 = (TextView)findViewById(R.id.textView2);
new testFunction().execute();
view1.setText(username);
view2.setText(id);
}
private class testFunction extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... x) {
username = "1";
id = "2";
return null;
}
}
}
Activity1有一个提交按钮,可以启动Activity2(此活动)。在Activity2调用onCreate()之后,屏幕上将出现“12”。当我单击返回(销毁Activity2并返回到Activity1)时,然后再次返回到Activity2,屏幕上不显示任何内容。这是为什么?
答案 0 :(得分:1)
这是一个问题
new testFunction().execute("1", "2").get();
您不应该使用get()
。它会阻止ui线程等待结果。你永远不应该阻止ui线程。使用
new testFunction().execute("1", "2");
将变量声明为实例变量
TextView view1,view2;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_user_data);
view1 = (TextView)findViewById(R.id.textView1);
view2 = (TextView)findViewById(R.id.textView2);
new testFunction().execute("1", "2")
然后在Asynctask onPostExecute中更新视图
@override
protected void onPostExecute(String result)
{
super.onPostExecute(result);
// update view here
}
答案 1 :(得分:0)
完成动作 Intent i = new Intent(这,这是你的类名.Class);
startActivity(i);
finish();
每当你在创建通话时按下提交按钮进入第二幕时,就这样了 并且您还可以在每次简历中调用您的asnyc任务时使用简历方法。
答案 2 :(得分:0)
关闭片段时必须存储用户名和ID值。 查看片段生命周期onSaveInstanceState。
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putBoolean(ARG_NAME, username);
outState.putBoolean(ARG_ID, id);
答案 3 :(得分:0)
我已经为你的onCreate方法添加了一些代码行
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_user_data);
//get the values from previous avtivity
Bundle bundle=getIntent().getExtras();
username=bundle.getString("username").toString();
id=bundle.getString("id").toString();
String result = new testFunction().execute("1", "2").get();
TextView view1 = (TextView)findViewById(R.id.textView1);
TextView view2 = (TextView)findViewById(R.id.textView2);
view1.setText(username);
view2.setText(id);
}
为了获取值,你必须传递上一个活动的值,我猜你已经正确地做了,你错过了什么,你忘了获取Intent值并将它们分配给用户名,id变量