android 为什么我的应用程序崩溃时,我改变它的布局?

xkftehaa  于 2023-03-11  发布在  Android
关注(0)|答案(8)|浏览(126)

我想使用Android Studio上的设置内容视图在显示真实的的主要活动之前在屏幕上显示欢迎消息。
我只是复制了部分代码,我认为它负责我的应用程序崩溃,因为如果我删除欢迎活动的一部分,我不会得到任何错误。
记住android studio不显示错误,只是当你运行它,程序会崩溃。有办法使它不崩溃吗?
(any建议使它更好地为更大的变化布局,因为我将添加更多的布局后与他们的活动)

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_welcom);
    Button btn = (Button) findViewById(R.id.button);
    View.OnClickListener welcomeListener = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            setContentView(R.layout.activity_main);
        }
    };
    btn.setOnClickListener(welcomeListener);
  }
zzwlnbp8

zzwlnbp81#

单击时应使用Intent而不是setContentView(R.layout.activity_main

button.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View arg0) {
             Intent k = new Intent(Welcomactivity.this, MainActivity.class);
             startActivity(k);

                }

            });
elcex8rz

elcex8rz2#

我建议你使用片段:您的Activity启动,显示第一个片段,其中包含欢迎消息和按钮,用户单击按钮,然后您将第一个片段替换为第二个片段(不将其添加到backstack,这样点击back时就不会返回到它)!

arknldoa

arknldoa3#

使用此选项加载主活动:

View.OnClickListener welcomeListener = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(YourCurrentActivity.this, MainActivity.class);
            startActivity(intent);
        }
    };
    btn.setOnClickListener(welcomeListener);
  }
esbemjvw

esbemjvw4#

试试这个-

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (getIntent()!=null){
            if (getIntent().getBooleanExtra("REFRESH",false)){
                setContentView(R.layout.activity_main);
            } else{
                setContentView(R.layout.activity_welcom);
            }
        }else{
            setContentView(R.layout.activity_welcom);
        }

        Button btn = (Button) findViewById(R.id.button);
        View.OnClickListener welcomeListener = new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent mIntent = new Intent(this,CurrentClass.class);
                mIntent.putExtra("REFRESH",true);
                startActivity(mIntent);
            }
        };
        btn.setOnClickListener(welcomeListener);
    }
jckbn6z7

jckbn6z75#

在一个Activity中添加多个布局的最佳选择是在Activity中使用片段,这样可以提供更好的性能。setContentView不是首选方法,它应该只在Activity中使用一次。
阅读此文档,您将更好地了解您需要做的所有事情:enter link description here

fd3cxomn

fd3cxomn6#

这并不是它的工作方式。你可以显示一个对话框来显示你的欢迎信息,或者使用ViewSwitcher来切换布局onClick。另一个选择是使用主布局在onClick上启动一个新的活动,无论你做什么,在这种情况下不要设置ContentView超过一次。

j1dl9f46

j1dl9f467#

如前所述,最好使用Intent在屏幕之间切换。从欢迎活动开始,然后单击运行下一个活动:

Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);

此外,你可以尝试使用Fragments来实现这个目的。但更好的做法是将启动画面放在FrameLayout中的主活动布局上,并使其成为setVisibility(Visibility.GONE) onClick。

km0tfn4u

km0tfn4u8#

我们做到了。如果其他人也有同样的问题,请使用以下步骤:我把代码编辑成这样:
'

View.OnClickListener welcomeListener = new View.OnClickListener() {
    @Override
    public void onClick(View v) {
  Intent intent = newIntent(YourCurrentActivity.this,MainActivity.class);
        startActivity(intent);
    }
};
btn.setOnClickListener(welcomeListener);
}

'然后我转到android manifest并在那里添加我的Welcome类。为什么?因为在android studio日志中有一个错误,即您没有将该类添加到android manifest.xml
'

<activity android:name=".WelcomeClass">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    <meta-data
        android:name="com.blog.software.app.WelcomeClass"
        android:resource="@layout/activity_welcom"/>
</activity>

你们所有的答案都很有用,我用它们解决了这个问题,所以感谢每一个人

相关问题