我想在android studio上使用set content view在显示真正的主要活动之前在屏幕上显示欢迎消息。
我只是复制我认为它对我的应用程序崩溃负责的代码部分,因为如果我删除了欢迎活动的部分,我将不会收到任何错误。
记住android studio不会在你运行它时显示错误,程序会崩溃。 有没有办法让它不崩溃?
(任何建议都可以让更好的布局更改,因为我将在稍后的活动中添加更多布局)
@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);
}
答案 0 :(得分:3)
你应该使用Intent而不是在Click上使用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);
}
});
答案 1 :(得分:1)
我建议您使用片段:您的活动开始,显示带欢迎消息和按钮的第一个片段,用户单击按钮然后您替换第一个片段(不将其添加到Backstack,因此您不会第二个用back
点击时再回到它!看看here
答案 2 :(得分:1)
使用此方法加载MainActivity:
Query
答案 3 :(得分:1)
试试这个 -
@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);
}
答案 4 :(得分:1)
在一个活动中添加多个布局的最佳选择是在活动中使用碎片,从而提供更好的性能。 setContentView不是一种优先方式,只能在Activity中使用一次。阅读本文档,您将更好地了解您需要做的所有事情:enter link description here
答案 5 :(得分:0)
这不是它的工作方式。您可以显示包含欢迎消息的对话框,也可以使用ViewSwitcher并在onClick上切换布局。另一个选择是使用主布局启动一个新的onClick活动,无论你做什么,在这种情况下不要多次设置SessionView。
答案 6 :(得分:0)
如前所述,最好使用Intent在屏幕之间切换。 从您的欢迎活动开始,然后在onClick上运行下一个:
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
此外,您可以尝试使用片段来实现此目的。但更好的做法 - 只需将您的启动画面放在FrameLayout
的主要活动布局上,然后点击它setVisibility(Visibility.GONE)
。
答案 7 :(得分:-1)
我们做到了。如果其他人有同样的问题,请使用以下步骤: 我把我的代码编辑成了这样的东西:
`
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清单并在那里添加我的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>
` 你的所有答案都很有用,我和他们解决了。感谢每一个人