2014-02-10 34 views
1

我是新來的android和我從教程學習。我想要做的是鏈接2 xml頁面。登錄後進入內容頁面。問題是當我在我的類文件中添加意圖代碼時,模擬器提供了錯誤消息「應用程序已停止工作」,否則代碼工作正常。如何編碼活動頁面... android

這是意圖的代碼,我曾嘗試:

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 
+2

發佈清單和堆棧跟蹤 – Raghunandan

+0

從LogCat發佈您的AndroidManifest.xml或錯誤 –

+0

可能是您沒有將第二頁的活動放到清單文件中。將此行放在主要活動標記之後 PSK

回答

1

一般來說,每一次活動都需要它自己的XML佈局文件(除非使用更先進的方法,或許這不是你的意圖無論如何)。

在onCreate方法中,您會看到setContentView(R.layout.cf); - 表示此活動正在調用佈局xml,名爲「cf」。

所以,如果你希望兩個活動,你想從一個到另一個去 - 做到以下幾點:

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

    } 

如果你有一個以上的活動,你需要聲明他們在您的瑪尼fest.xml 例如:現在

<activity android:name=".secondPage" > </activity> 

,在你的第一個活動,你會想,當你按下按鈕或有事要到第二個活動一般。 所以,在你的onClickListener(或任何你想要去第二頁),您撥打的意圖,像這樣:

Intent intent = new Intent(firstPage.this, secondPage.class); 
startActivity(intent); 

這應該做的伎倆!

+0

thankyou gilonm ..代碼的作品..更重要的..謝謝你的解釋... :) – Alvin

+0

快樂我可以幫忙! – gilonm

0

我認爲你缺少的活動添加到您的清單文件。如果是這樣,那麼檢查你的清單文件,你已經在清單文件中聲明瞭seconpage活動。或者如果沒有添加,請按如下所示添加它。

將其添加如下。

<activity android:name=".seconpage" > 
     </activity> 

在完成您的第一個活動標記後添加此行。

+0

謝謝innocentkiller ..代碼工程... – Alvin

0

你得到android.content.ActivityNotFoundException

您的應用程序都沒有能夠找到secondpage活動在您的應用程序。所以首先你必須在使用它們之前將每個Activity註冊到你的清單文件。

<activity android:name=".secondpage"></activity> 

和調用這個你可以使用

Intent myIntent = new Intent(MainActivity.this, secondpage.class); 
      startActivity(myIntent); 
+0

我必須提供packagename.classname或只是.classname? – Alvin

+0

不需要。但你的活動在不同的軟件包,所以把packagename.classname ... @ user3060890 – PSK

+0

謝謝psk ..其工作..也即使我們給package.classname和只是.classname ..代碼工程.. – Alvin