如何编写活动页面... android

时间:2014-02-10 08:04:58

标签: java android android-intent

我是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

3 个答案:

答案 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);