安卓布局加载了两次



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

最新更新