在按钮单击事件我正在使用setContentView(R.layout.activity_main(;它工作正常。
当我尝试使用 Intent 和 startactivity 命令启动新活动时,它会加载布局两次,看起来像布局正确加载,然后再次加载 1 秒相同的布局。
在开始活动之前,它加载了一次。
show.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
String selected = spinner0.getSelectedItem().toString();
if(selected.equals("Item 2"))
{
Intent intent = new Intent(second_layout.this,MainActivity.class);
setContentView(R.layout.activity_main);
startActivity(intent);
}
}
});
我猜这条线是问题所在。
setContentView(R.layout.activity_main);
setContentView
只会更改当前活动的布局,因此您将当前布局更改为 activity_main
,然后打开MainActivity
类的Intent
。
只需删除该行即可。
当您开始一个新活动时,启动意图时不需要 setContentView。
正在启动的意图将具有用于加载布局的代码。因此,请删除此行。
我希望,在你的MainActivity.class中,你已经编写了setContentView(R.layout.activity_main(,这足以显示所需的布局。因此,请删除您在启动意图时包含的此额外行。
在开始第二个活动之前,不能在第一个活动中设置第二个活动布局。它将在您的第二个活动的onCreate()
方法中自动设置。因此,您应该在MainActivity's
onCreate()
方法中编写setContentView(R.layout.activity_main);
。只需将其从 onClick 侦听器中删除即可。
因此,请在您的onClick
中写下以下内容:
show.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
String selected = spinner0.getSelectedItem().toString();
if(selected.equals("Item 2"))
{
Intent intent = new Intent(second_layout.this,MainActivity.class);
startActivity(intent);
}
}
});
在您的MainActivity
中,您必须将布局设置为如下:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}