我在某些时候正在更改Activity的ContentView。 (至View2)。 将其更改回View1后,听众就无法工作了。 我已经尝试将Listener放在onResume()方法中。
无论如何使用setContentView()来显示例如进度屏幕/请稍候,...(当asyncTask正在运行时)。 或者你应该为每个活动只有一个mainView吗? (并动态替换内容)。
//编辑:更具体: 我正在寻找像
这样的东西LinearLayout item = (LinearLayout) findViewById(R.id.mainView);
View child = getLayoutInflater().inflate(R.layout.progress, null);
item.addView(child);
但不是添加“progress.xml”,而是应该删除当前布局,并且只显示“progress.xml”。 我需要一个“容器”并显示/隐藏mainView /进度吗? 但这对我来说似乎不太合适......
另见下面的代码(剥离)
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.view1);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
doSomething();
}
});
}
setContentView(R.layout.view2);
[...]
setContentView(R.layout.view1);
//Listener not more working
答案 0 :(得分:2)
谢谢大家的回复。你让我意识到,当我删除或替换(使用setContentView())主视图时,onClickListeners会丢失。我现在以这种方式结束了:
的onCreate:
setContentView(R.layout.parse);
LinearLayout container = (LinearLayout) findViewById(R.id.container);
container.addView(getLayoutInflater().inflate(R.layout.dialog, null));
container.addView(getLayoutInflater().inflate(R.layout.progress, null));
onStartDoingSomething:
findViewById(R.id.dialog).setVisibility(View.INVISIBLE);
findViewById(R.id.progress).setVisibility(View.VISIBLE);
onEndDoingSomehting:
findViewById(R.id.dialog).setVisibility(View.VISIBLE);
findViewById(R.id.progress).setVisibility(View.INVISIBLE);
我可能会将View.INVISIBLE更改为View.GONE,就像nmr所说,但由于我从未使用过View.GONE,我必须首先检查Android doku;)
答案 1 :(得分:1)
假设您使用'findViewById'来初始化'button',那么每次执行setContentView(R.layout.view1)时都需要这样做;
答案 2 :(得分:0)
每个Activity只能有一个UI,您应该创建另一个活动,并在其onCreate方法中设置内容视图
步骤:
使用以下代码设置内容视图:
public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); 的setContentView(R.layout.view2);
}
在应用程序清单中定义活动:
在第一个活动中创建一个意图:
public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); 的setContentView(R.layout.view1);
按钮按钮=(按钮)findViewById(R.id.button);
button.setOnClickListener(new OnClickListener(){ @覆盖 public void onClick(查看v){ 意图(); } }); }
void intent(){
Intent intent = new Intent(); intent.setClass(Activity1.this,Activity2.class); startActivity(意向);
}
你去c: