我是android的新手,我正在从教程中学习。我想要做的是链接2 xml页面。登录后转到内容页面。问题是当我在我的类文件中添加意图代码时,模拟器提供错误信息“应用程序已停止工作”,否则代码运行正常。
这是我尝试过的意图代码:
Intent myIntent = new Intent(v.getContext(), secondpage.class);
startActivityForResult(myIntent, 1);
我也试过这个
Intent myIntent = new Intent(MainActivity.this, secondpage.class);
startActivity(myIntent);
最后,这个
Intent myIntent = new Intent(getApplicationContext(), secondpage.class);
startActivity(myIntent);
我的secondpage.class代码如下(xml文件的名称是cf)
public class secondpage extends Activity{
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.cf);
}
}
我做错了什么?为什么意图导致模拟器闪烁错误信息?
我的manifest.xml
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.qwedd.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
我的日志猫
02-10 03:07:49.440: D/dalvikvm(903): Not late-enabling CheckJNI (already on)
02-10 03:07:52.290: D/dalvikvm(903): GC_FOR_ALLOC freed 54K, 5% free 2890K/3016K, paused 39ms, total 41ms
02-10 03:07:52.370: I/dalvikvm-heap(903): Grow heap (frag case) to 12.512MB for 10092616-byte allocation
02-10 03:07:52.440: D/dalvikvm(903): GC_FOR_ALLOC freed 2K, 2% free 12744K/12876K, paused 65ms, total 65ms
02-10 03:07:54.010: D/(903): HostConnection::get() New Host Connection established 0xb81424b8, tid 903
02-10 03:07:54.080: W/EGL_emulation(903): eglSurfaceAttrib not implemented
02-10 03:07:54.090: D/OpenGLRenderer(903): Enabling debug mode 0
02-10 03:08:00.020: D/InputEventConsistencyVerifier(903): KeyEvent: ACTION_UP but key was not down.
02-10 03:08:00.020: D/InputEventConsistencyVerifier(903): in android.widget.EditText{b3d9ea80 VFED..CL .F...... 15,315-465,374 #7f080001 app:id/txtPassword}
02-10 03:08:00.020: D/InputEventConsistencyVerifier(903): 0: sent at 103941000000, KeyEvent { action=ACTION_UP, keyCode=KEYCODE_TAB, scanCode=15, metaState=0, flags=0x8, repeatCount=0, eventTime=103941, downTime=103804, deviceId=0, source=0x101 }
02-10 03:08:38.556: D/AndroidRuntime(903): Shutting down VM
02-10 03:08:38.556: W/dalvikvm(903): threadid=1: thread exiting with uncaught exception (group=0xb3aeaba8)
02-10 03:08:38.566: E/AndroidRuntime(903): FATAL EXCEPTION: main
02-10 03:08:38.566: E/AndroidRuntime(903): Process: com.example.qwedd, PID: 903
02-10 03:08:38.566: E/AndroidRuntime(903): android.content.ActivityNotFoundException: Unable to find explicit activity class {com.example.qwedd/com.example.qwedd.secondpage}; have you declared this activity in your AndroidManifest.xml?
02-10 03:08:38.566: E/AndroidRuntime(903): at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1628)
02-10 03:08:38.566: E/AndroidRuntime(903): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1424)
02-10 03:08:38.566: E/AndroidRuntime(903): at android.app.Activity.startActivityForResult(Activity.java:3424)
02-10 03:08:38.566: E/AndroidRuntime(903): at android.app.Activity.startActivityForResult(Activity.java:3385)
02-10 03:08:38.566: E/AndroidRuntime(903): at android.app.Activity.startActivity(Activity.java:3627)
02-10 03:08:38.566: E/AndroidRuntime(903): at android.app.Activity.startActivity(Activity.java:3595)
02-10 03:08:38.566: E/AndroidRuntime(903): at com.example.qwedd.MainActivity$1.onClick(MainActivity.java:40)
02-10 03:08:38.566: E/AndroidRuntime(903): at android.view.View.performClick(View.java:4438)
02-10 03:08:38.566: E/AndroidRuntime(903): at android.view.View$PerformClick.run(View.java:18422)
02-10 03:08:38.566: E/AndroidRuntime(903): at android.os.Handler.handleCallback(Handler.java:733)
02-10 03:08:38.566: E/AndroidRuntime(903): at android.os.Handler.dispatchMessage(Handler.java:95)
02-10 03:08:38.566: E/AndroidRuntime(903): at android.os.Looper.loop(Looper.java:136)
02-10 03:08:38.566: E/AndroidRuntime(903): at android.app.ActivityThread.main(ActivityThread.java:5017)
02-10 03:08:38.566: E/AndroidRuntime(903): at java.lang.reflect.Method.invokeNative(Native Method)
02-10 03:08:38.566: E/AndroidRuntime(903): at java.lang.reflect.Method.invoke(Method.java:515)
02-10 03:08:38.566: E/AndroidRuntime(903): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
02-10 03:08:38.566: E/AndroidRuntime(903): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
02-10 03:08:38.566: E/AndroidRuntime(903): at dalvik.system.NativeStart.main(Native Method)
02-10 03:09:23.546: I/Process(903): Sending signal. PID: 903 SIG: 9
答案 0 :(得分:1)
一般来说,每个Activity都需要它自己的xml布局文件(除非使用更高级的方法,否则可能不是你的意图)。
在onCreate方法中,您会看到setContentView(R.layout.cf);
- 这意味着此活动正在调用名为“cf”的布局xml。
因此,如果您想要两个活动,并且您想要从一个活动转到另一个活动 - 请执行以下操作:
1)在第一个活动中,在onCreate方法中,调用你的第一个布局文件,如下所示:
public class firstActivity extends Activity{
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.firstlayout);
}
在第二个活动中,在onCreate方法中,调用第二个布局文件,如下所示:
public class secondActivity extends Activity{
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.secondlayout);
}
如果您有多个活动,则需要在manifest.xml中声明它们 例如:
<activity android:name=".secondPage" > </activity>
现在,在您的第一个活动中,您通常会在按下按钮或其他内容时进入第二个活动。 所以,在你的onClickListener(或你想去第二页的任何地方),你可以这样调用一个Intent:
Intent intent = new Intent(firstPage.this, secondPage.class);
startActivity(intent);
这应该可以做到!
答案 1 :(得分:0)
我认为你缺少为你的Manifest文件添加活动。如果是这样,那么检查清单文件中您已在清单文件中声明seconpage
活动。或者如果没有添加,则按如下所示添加。
将其添加如下。
<activity android:name=".seconpage" >
</activity>
在完成第一个活动代码后添加此行。
答案 2 :(得分:0)
您将获得android.content.ActivityNotFoundException
您的应用无法在您的应用中找到secondpage
活动。因此,首先必须在使用它们之前将每个Activity
注册到清单文件。
<activity android:name=".secondpage"></activity>
并且为了调用它,您可以使用
Intent myIntent = new Intent(MainActivity.this, secondpage.class);
startActivity(myIntent);