我是使用Android Studio创建应用程序的初学者。
在我的主页/ ActivityMain上,我想放一个textView,点击后会启动另一个RelativeLayout活动。
我尝试使用intent执行此操作,但单击文本框时应用程序崩溃。 请注意,对于所有代码,我认为不相关的陈述已被删除(导入,捆绑) 下面是我的activity_main.xml代码:
<ImageView
android:id="@+id/imageView2"
android:layout_width="match_parent"
android:layout_height="256dp"
android:layout_margin="16dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Organelles" />
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/membrane"
android:text="Cell Membrane"
android:onClick="explainCellMembrane" />
以下是我的MainActivity.java代码,其中包含包含我的意图的代码:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void explainCellMembrane(View view) {
Intent myIntent = new Intent(MainActivity.this, MembraneActivity.class);
MainActivity.this.startActivity(myIntent);
}
}
以下是意图启动的类(MembraneActivity)的代码:
package com.example.android.cellularbiology;
public class MembraneActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_membrane);
}
}
最后是我自定义Java类布局的代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="Membrane Explanation Page"/>
</LinearLayout>
在AndroidStudio中没有错误(红色下划线) 当应用程序崩溃时,它不显示错误,只是说它已停止。
如何修复我的意图?或者应该使用其他方法吗?
感谢您的帮助。
Android Manifest:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.android.cellularbiology">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
日志:
01/03 00:06:12: Launching app
No apk changes detected since last installation, skipping installation of /Users/FideronTSANG/Desktop/CellularBiology/app/build/outputs/apk/app-debug.apk
$ adb shell am force-stop com.example.android.cellularbiology
$ adb shell am start -n "com.example.android.cellularbiology/com.example.android.cellularbiology.MainActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER
Client not ready yet..Waiting for process to come online
Waiting for process to come online
Connected to process 24150 on device samsung-sm_c9000-b9dec0e1
Application terminated.
结论: 谢谢大家回答和帮助一个菜鸟! 你完全保存了我的项目! 我希望你度过愉快的一天:)
添加
后意图有效<activity
android:name = ".MembraneActivity">
</activity>
到我的机器人清单。
我还使用了
提供的改进意图public void explainCellMembrane(View view) {
startActivity(new Intent(MainActivity.this, MembraneActivity.class));
}
答案 0 :(得分:1)
首先将所有方法替换为explainCellMembrane
方法:
public void explainCellMembrane(View view) {
startActivity(new Intent(MainActivity.this, MembraneActivity.class));
}
第二,尝试清理并重建您的项目,然后在问题中分享您的logCat
。
修改强>
在检查了logCat
后,我发现错误不在您的logCat
中,但它在设备中,请尝试删除模拟器或移动设备中的应用程序,然后通过Android-Studio再次安装,也适用于我,因为它经常随机出现。
答案 1 :(得分:0)
您需要将该类添加到清单中。
添加以下内容......
<activity android:name=".MembraneActivity"></activity>
这将在</activity>
标记下。
答案 2 :(得分:0)
我认为,Intent
没问题。问题是您错过了在MembraneActivity
文件中添加Manifest
,该文件将位于<activity><activity/>
标记下。例如,
<activity
android:name = ".MembraneActivity">
</activity>
每当您在应用中添加新的Activity
时,您必须在Activity
文件中添加Manifest
名称。否则,您的应用将无法识别您尝试通过Activity
Intent
开始的myIntent
。
现在在MembraneActivity
文件中添加Manifest
后,就会出现这样的情况,
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.android.cellularbiology">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".MainActivity">
<intent-filter>
<action
android:name="android.intent.action.MAIN" />
<category
android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!--your missing activity added here-->
<activity
android:name = ".MembraneActivity">
</activity>
</application>
</manifest>