Android布局加载了两次

时间:2013-10-12 08:25:07

标签: android android-layout android-intent

按钮点击事件我使用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);
        }
    }
});

3 个答案:

答案 0 :(得分:1)

我猜这一行是问题.-

setContentView(R.layout.activity_main);

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

只需删除该行。

答案 1 :(得分:0)

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

入门的意图将包含加载布局的代码。所以请删除这一行。

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

答案 2 :(得分: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);
      }
}