0

在按钮单击事件上,我正在使用 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);
        }
    }
});
4

3 回答 3

1

我猜这条线是问题所在。-

setContentView(R.layout.activity_main);

setContentView只会更改当前活动的布局,因此您将当前布局更改为activity_main,然后打开IntentforMainActivity类。

只需删除该行。

于 2013-10-12T08:32:50.720 回答
0

当您开始一个新的活动时,在启动意图时不需要 setContentView。

开始的意图将具有加载布局的代码。所以请删除这一行。

我希望,在您的 MainActivity.class 中,您已经在编写 setContentView(R.layout.activity_main),这足以显示所需的布局。因此,请删除您在启动意图时包含的额外行。

于 2013-10-12T08:37:46.673 回答
0

在开始第二个活动之前,您不能在第一个活动中设置第二个活动布局。它将在您的第二个活动的onCreate()方法中自动设置。所以你应该写setContentView(R.layout.activity_main);在你的MainActivity's onCreate()方法中。只需将其从 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);
      }
}
于 2013-10-12T08:38:49.330 回答