Android 意图在一个文件中的类之间不起作用
我的问题是-Intent不能在一个文件中的类之间工作。应用程序正在构建中,没有错误,可以安装,但是,当im打开Android 意图在一个文件中的类之间不起作用,android,Android,我的问题是-Intent不能在一个文件中的类之间工作。应用程序正在构建中,没有错误,可以安装,但是,当im打开act\u 2\u 1\u开始并尝试进入pod1时,按下按钮option1,屏幕会变白2秒钟,并在act\u 2\u 1\u开始之前进入活动(活动在另一个文件中,有一个按钮让我开始行动。我认为问题的解决非常简单,我命名错误,但我不知道是什么。我需要在一个文件中包含多个类。有人可以帮助我吗。以下是代码: public class act_2_1_getting_started extend
act\u 2\u 1\u开始
并尝试进入pod1
时,按下按钮option1
,屏幕会变白2秒钟,并在act\u 2\u 1\u开始之前进入活动
(活动在另一个文件中,有一个按钮让我开始行动。我认为问题的解决非常简单,我命名错误,但我不知道是什么。我需要在一个文件中包含多个类。有人可以帮助我吗。以下是代码:
public class act_2_1_getting_started extends AppCompatActivity implements View.OnClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.act_2_1_getting_started);
TextView story = (TextView) findViewById(R.id.story);
story.setText("Text1");
Button option1 = (Button) findViewById(R.id.option1);
option1.setOnClickListener(this);
}
public void onClick(View view) {
Intent intent;
switch (view.getId()) {
case R.id.option1:
intent = new Intent(this, pod1.class);
startActivity(intent);
break;
}
}
}
和同一文件中的另一个类:
class pod1 extends AppCompatActivity implements View.OnClickListener {
protected void onCreate(Bundle savedInstanceState1) {
super.onCreate(savedInstanceState1);
setContentView(R.layout.act_2_1_getting_started);
TextView story = (TextView) findViewById(R.id.story) ;
story.setText("Text2");
Button option1 = (Button) findViewById(R.id.option1);
option1.setOnClickListener(this);
}
public void onClick(View view) {
Intent intent;
switch (view.getId()) {
case R.id.option1:
intent = new Intent(this, anoth.class );
startActivity(intent);
break;
}
}
}
看看AndroidManifest.xml文件。您在那里定义了pod1活动了吗 在尝试启动新活动时,logcat肯定会向您显示错误 顺便说一句,请尽量遵守Java命名约定,不要使用“_”,并以大写字母开头类名 问候 编辑 如果您希望在一个java文件中包含两个活动(我不知道为什么,这不是一个好方法),那么以下方法是:
public class Activity1 extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState1) {
super.onCreate(savedInstanceState1);
}
public class Activity2 extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState1) {
super.onCreate(savedInstanceState1);
}
}
}
然后,您可以通过以下方式在清单中添加内部活动:
<activity android:name="<package_name>.Activity1$Activity2"/>
这类类类被称为“嵌套类”,但它们用于其他目的,因此使用不同的java文件。我认为这可能有助于防止出现白屏..把这个
true
在您的样式中..现在您的样式将如下所示:
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="cardViewStyle">@style/CardView</item>
<item name="android:windowDisablePreview">true</item>
<item name="android:textDirection">locale</item>
</style>
@颜色/原色
@颜色/原色暗
@颜色/颜色重音
@样式/卡片视图
真的
场所
Unrelated,你应该阅读Java命名约定使你的pod1类成为公共类。如果pod1在不同的包中,那么act_2_1_getting_started类将无法访问它。但是当我使pod1类成为公共类时,Android Studio给了我两种可能性-使它公开,或者将它移动到pod1.class,这样它将我在另一个文件中。Sol您将如何解决它,一个文件中有多个类,并且可以在它们之间使用intent?在AndroidManifest.xml中,它不允许我定义它,因为它不是公共的。正如我向您展示的代码,它构建时没有错误,安装后工作不正常。您能告诉我如何放置多个cl吗ass在一个文件上,并使它们之间的意图成为可能?您必须将其公开,活动类必须从包外部访问。您需要将其添加到清单中,否则活动将不会启动(错误日志将告诉您这一点).白屏不是问题,我将其描述为主要问题的原因,即在一个文件中没有引起类之间的意图。