2016-01-13 139 views
-6

以下是清單文件。無法從android studio的第一個活動中打開第二個活動

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.paidquery.mobile"> 

    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme"> 
     <activity 
      android:name=".LoginActivity" 
      android:label="@string/app_name" 
      android:theme="@style/AppTheme.NoActionBar"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name=".SignUpActivity" 
      android:label="@string/title_activity_sign_up" 
      android:theme="@style/AppTheme.NoActionBar"> 
     </activity> 
    </application> 

</manifest> 

這是登錄活動的java文件,我在哪裏寫上點擊功能,這也是我的第一個活動。我看到兩個控制檯登錄到我的控制檯,但每當點擊註冊按鈕時,應用程序就會自行關閉,並在控制檯中發出錯誤,表示找不到註冊活動。

package com.paidquery.mobile; 

import android.content.Intent; 
import android.os.Bundle; 
import android.support.design.widget.FloatingActionButton; 
import android.support.design.widget.Snackbar; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.util.Log; 
import android.view.View; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.widget.Button; 

public class LoginActivity extends AppCompatActivity{ 

    public static final String LOGIN_TAG = "login_msg"; 
    private static Button sign_up_btn; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_login); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 

     FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
     fab.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) 
         .setAction("Action", null).show(); 
      } 
     }); 


     onClickSignUpBtnListner(); 
     Log.i(LOGIN_TAG, "Login onCreate function"); 
    } 

    /** Sign up button click function */ 

    public void onClickSignUpBtnListner() { 

     Log.i(LOGIN_TAG,"In onClickSignUpBtnListner call"); 
     sign_up_btn = (Button)findViewById(R.id.signUpBtn); 

     sign_up_btn.setOnClickListener(
      new View.OnClickListener(){ 
       @Override 
       public void onClick(View v) { 
        Intent intent = new Intent(LoginActivity.this, SignUpActivity.class); 
        startActivity(intent); 
       } 
      } 
     ); 

    } 
} 

這裏是最新的控制檯日誌錯誤,當我點擊註冊按鈕的登錄活動。

01-13 16:25:18.844 28104-28104/com.paidquery.mobile E/AndroidRuntime:致命異常:主 工藝:com.paidquery.mobile,PID:28104 了java.lang.RuntimeException:無法開始活動ComponentInfo {com.paidquery.mobile/com.paidquery.mobile.SignUpActivity}:java.lang.NullPointerException:嘗試調用虛擬方法'java.lang.CharSequence android.support.v7.widget.Toolbar.getTitle()'上的空對象引用 在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416) 在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 在android.app.ActivityThread.-wrap11(ActivityThread。 java) at android.app.ActivityThread $ h.handleMessage(ActivityThread.java:1344) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java: 148) 在android.app.ActivityThread.main(ActivityThread.java:5417) 在java.lang.reflect.Method.invoke(本機方法) 在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit .java:726) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 引起:java.lang.NullPointerException:試圖調用虛擬方法'java.lang.CharSequence android.support。 v7.widget.Toolbar.getTitle()'的空對象ref在android.support.v7.widget.ToolbarWidgetWrapper(ToolbarWidgetWrapper.java:98) at android.support.v7.widget.ToolbarWidgetWrapper。(ToolbarWidgetWrapper.java:91) at android.support.v7.app.ToolbarActionBar (ToolbarActionBar.java:73) 在android.support.v7.app.AppCompatDelegateImplV7.setSupportActionBar(AppCompatDelegateImplV7.java:205) 在android.support.v7.app.AppCompatActivity.setSupportActionBar(AppCompatActivity.java:99) 在com.paidquery.mobile.SignUpActivity.onCreate(SignUpActivity.java:17) at android.app.Activity.performCreate(Activity.java:6237) at android.app.Instrumentation.callA ctivityOnCreate(Instrumentation.java:1107) 在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369) 在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 在android.app.ActivityThread.-wrap11 (ActivityThread.java) at android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1344) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper (Native Method) (android)在com.android。internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:726) 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

+1

檢查manifest.xml。在其中聲明SignUpActivity。 – Shane

+1

是你的清單包含'SignUpActivity'活動? –

+0

下面是清單文件。 –

回答

0

正如在評論你的OP說,我們需要碼。

然而,這是活動開始活動最常見的方式。

假設如下:

public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     Button sign_up_btn = (Button) findViewById(R.id.sign_up_btn); 
     sign_up_btn.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       // start activity sign up here : 
       Intent intent = new Intent(MainActivity.this, SignUpActivity.class); 
       startActivity(intent); 
      } 
    } 
} 

然而,也如評論所說,你必須聲明你的的AndroidManifest.xml文件中的每個活動。

裏面的<application> </application>範圍,您SignUpActivity如下:

<activity android:name="SignUpActivity"/> 

確保你寫包含此活動,如果你把它放在一個特定的包的包的名稱。無需寫下您的應用程序包,因爲它應該在清單中聲明爲好。

同時也要確保有您的電話活動中適當的進口(在我的例子中,MainActivity),而Android Studio將會幫你。

[更新1]

鑑於你的崩潰日誌和評論,錯誤的是,你的工具欄SignUpActivity內不存在,所以當你試圖找到它返回

這是因爲在你的AndroidManifest文件中聲明你的SignUpActivity的他們被設置爲刪除工具欄:

<activity [...] android:theme="@style/AppTheme.NoActionBar"> </activity>

因此,你應該使用另一個主題。要做到這一點,修改styles.xml文件,其中AppTheme定義和改變這樣的事情:

<style name="AppTheme" parent="Base.Theme.AppCompat.DarkActionBar">

,瞧你現在可以在你的SignUpActivity使用工具欄。

+0

正如我的答案中所述:1)如果相同,則無需指定包含** SignUpActivity **的軟件包正如您的** AndroidManifest **開頭所述。請刪除'「com.paidquery.mobile」'。 2)你創建** Intent **的方式用於行動,這不是你想要做的事情。嘗試如下:'Intent intent = new Intent(LoginActivity.this,SignUpActivity.class)'。它應該如我的答案中所述那樣工作。 – Mackovich

+0

我已經更新了主文章機智當前代碼。不工作,錯誤:無法啓動活動ComponentInfo {com.paidquery.mobile/com.paidquery.mobile.SignUpActivity} –

+0

您能發佈完整的錯誤堆棧日誌嗎? – Mackovich

1

請仔細閱讀Intent構造。

您使用Intent (String action)new Intent("com.paidquery.mobile.SignUpActivity")),開始你的第二個活動。

Androdi會認爲com.paidquery.mobile.SignUpActivity意圖操作過濾器,它在manifest.xml文件中不可用。

你的代碼更改爲:

Intent intent = new Intent(LoginActivity.this, SignUpActivity.class); 
startActivity(intent); 
+0

現在,在控制檯中出現此錯誤。 –

+0

無法啓動活動ComponentInfo {com.paidquery.mobile/com.paidquery.mobile.SignUpActivity} –

+0

嘗試爲清單中的SignUpActivity移除標記(及其操作)。 – Rami

0

它的崩潰,因爲SignUpActivity.java號線17

我認爲你正在嘗試設置自定義actionbar/toolbar但在你的第二個xml(對於SignUpActivity)中沒有提及。

相關問題