2016-07-27 78 views
0

嗨,大家好,我使用我的Android應用3個活動,是如何在按鈕點擊第三個活動從第一次活動去次活動從二上按一下按鈕在安卓

1.main_activity

2。 Secondactivity

3.Third活動

我面臨的問題,當我試圖通過對主要活動點擊一個按鈕,打開與主活動第二個活動。該應用程序崩潰和沒有作用

我還需要當打開

由於我是新到Android編碼通過點擊一個按鈕打開我第三個活動次活動我無法理解我在編碼中做錯了。我想尋求有關信息,並還需要任何一個誰可以幫我這個

在此先感謝

下面是完整的代碼和錯誤我得到的是這種

07-27 12:13:51.887 23039-23039/com.example.mohammadzakriya.tech_bgkapp E/AndroidRuntime: FATAL EXCEPTION: main 
    Process: com.example.mohammadzakriya.tech_bgkapp, PID: 23039 
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.mohammadzakriya.tech_bgkapp/com.example.mohammadzakriya.tech_bgkapp.Secondactivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416) 
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
     at 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) 
     at android.app.ActivityThread.main(ActivityThread.java:5417) 
     at java.lang.reflect.Method.invoke(Native Method) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference 
     at com.example.mohammadzakriya.tech_bgkapp.Secondactivity.OnclickButtonListener(Secondactivity.java:24) 
     at com.example.mohammadzakriya.tech_bgkapp.Secondactivity.onCreate(Secondactivity.java:19) 
     at android.app.Activity.performCreate(Activity.java:6237) 
     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107) 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369) 
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
     at 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) 
     at android.app.ActivityThread.main(ActivityThread.java:5417) 
     at java.lang.reflect.Method.invoke(Native Method) "** 
                          at java.lang.reflect.Method.invoke(Native Method)  

這裏就是Android主要Activity.java文件:

package com.example.mohammadzakriya.tech_bgkapp; 

import android.content.Intent; 
import android.support.v7.app.ActionBarActivity; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 

public class MainActivity extends AppCompatActivity{ 

    public static Button button_smb; 


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

    public void OnclickButtonListener(){ 
     button_smb =(Button)findViewById(R.id.button); 
     button_smb.setOnClickListener(
       new View.OnClickListener() { 
        @Override 
        public void onClick(View view) { 
         Intent intent = new Intent("com.example.mohammadzakriya.tech_bgkapp.Secondactivity"); 
         startActivity(intent); 
        } 
       } 
     ); 
    } 
} 

這裏是二Activity.java文件:

package com.example.mohammadzakriya.tech_bgkapp; 

import android.app.Activity; 
import android.content.Intent; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 

public class Secondactivity extends Activity{ 

    public static Button button_smb1; 


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

    public void OnclickButtonListener(){ 
     button_smb1 =(Button)findViewById(R.id.button); 
     button_smb1.setOnClickListener(
       new View.OnClickListener() { 
        @Override 
        public void onClick(View view) { 
         Intent myintent = new Intent("com.example.mohammadzakriya.tech_bgkapp.ThirdActivity"); 
         startActivity(myintent); 
        } 
       } 
     ); 
    } 
} 

主要活動的XML文件:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="com.example.mohammadzakriya.tech_bgkapp.MainActivity" 
    android:background="@drawable/frontpic"> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Click to proceed" 
     android:id="@+id/button" 
     android:layout_centerVertical="true" 
     android:layout_centerHorizontal="true" 
     android:textStyle="bold|italic|normal" 
     android:textSize="19dp" 
     android:background="#d55b26f8" 
     android:textColor="#e2e0e0" /> 

    <TextView 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:text="  WELCOME TO BAGALKOT APP" 
     android:id="@+id/textView" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true" 
     android:textStyle="bold|italic" 
     android:layout_marginTop="50dp" 
     android:textSize="25dp" 
     android:background="#fbe47d0e" 
     android:textColor="#e2e0e0" /> 
</RelativeLayout> 

次活動的XML文件:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="com.example.mohammadzakriya.tech_bgkapp.Secondactivity" 
    android:background="#eb5d16ea"> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="ELECTRONICS" 
     android:id="@+id/button2" 
     android:layout_marginTop="42dp" 
     android:textStyle="bold|italic|normal" 
     android:background="#eec16d0d" 
     android:layout_below="@+id/textView2" 
     android:layout_alignParentStart="true" 
     android:textSize="18dp" 
     android:textColor="#e2e0e0"/> 

    <TextView 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:text="    SELECT THE CATEGORY" 
     android:id="@+id/textView2" 
     android:layout_alignParentTop="true" 
     android:layout_alignStart="@+id/button2" 
     android:layout_marginTop="15dp" 
     android:textStyle="bold|italic|" 
     android:background="#fbe47d0e" 
     android:textColor="#e2e0e0"/> 
</RelativeLayout> 

Android清單文件:

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

    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme"> 
     <activity 
      android:name=".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> 
     <activity 
      android:name=".Secondactivity" 
      android:label="Tech-Bgk App"> 
      <intent-filter> 
       <action android:name="com.example.mohammadzakriya.tech_bgkapp.Secondactivity" /> 

       <category android:name="android.intent.category.DEFAULT" /> 
      </intent-filter> 
     </activity> 
     <activity android:name=".ThirdActivity" 
        android:label="Tech-Bgk App"> 
      <intent-filter> 
       <action android:name="com.example.mohammadzakriya.tech_bgkapp.ThirdActivity" /> 

       <category android:name="android.intent.category.DEFAULT" /> 
      </intent-filter> 

     </activity> 
    </application> 

</manifest> 

回答

0

使用此:

Intent intent = new Intent(MainActivity.this, Secondactivity.class); 
startActivity(intent); 

根據我的經驗,這是通過代碼從一個Activity移動到另一個Activity的方式。

還有一件事,那就是添加一個onClickListener()奇怪的是,如果它只是一個簡單的「第一個活動到第二活動」你應該直接申報按鈕,設置onClickListener()

Button button_smb =(Button)findViewById(R.id.button); 
button_smb.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     Intent intent = new Intent(this, Secondactivity.class); 
     startActivity(intent); 
     } 
} 
+0

開關我覺得這裏'this'被引用'OnClickListener'對象,而不是引用'Activity'。所以我認爲它會給你一個錯誤,或者它不會給你想要的輸出。 –

+0

Ohooo我幾乎總是忘記,對不起,編輯它 –

+0

這就是爲什麼總是嘗試使用一個上下文對象,它會讓你安全。 –

0

低於更換代碼在您的mainActivity文件中。

button_smb.setOnClickListener(
       new View.OnClickListener() { 
        @Override 
        public void onClick(View view) { 
         Intent intent = new Intent(MainActivity.this,Secondactivity.class); 
         startActivity(intent); 
        } 
       } 
     ); 
+0

這裏'this'將引用'OnClickListener'對象。所以它不會工作,我認爲。 –

+0

完成編輯.. –

0

嘗試像,

Intent intent = new Intent(MainActivity.this, Secondactivity.class); 
startActivity(intent); 

這應該可以幫助你

1

請碼嘗試像下面

在MainActivity按鈕點擊進入SecondActivity

@Override 
    public void onClick(View view) { 
     Intent myintent = new Intent(MainActivity.this, SecondActivity.class); 
     startActivity(myintent); 
    } 

一個在SecondActivity d按鈕點擊進入ThirdActivity

@Override 
    public void onClick(View view) { 
     Intent myintent = new Intent(SecondActivity.this, ThirdActivity.class); 
     startActivity(myintent); 
    } 

編輯

一切都在你的代碼是除了Secondactivity的button_smb1初始化罰款。

請不要爲

button_smb1 =(Button)findViewById(R.id.button2);在Secondactivity的變化。

現在它會工作。沒有必要改變以外的任何東西。

+0

完成上述編輯,但無法解決錯誤。我需要在應用編輯之前在Android清單文件中進行更改嗎? –

+0

請在第二個活動中做到這一點'button_smb1 =(Button)findViewById(R.id.button2);'。現在它會工作。沒有必要改變以外的任何東西。 –

+0

感謝它的工作。 –

0

更改下面的代碼
主要活動於次活動

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

次活動以第三個活動

Intent intent = new Intent(this, ThirdActivity.class); 
startActivity(intent); 
0

爲了避免新的,我更喜歡用這個計算策略:

public class MyActivity extends AppCompactActivity implents View.OnClickListener{ 

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    .... 
    button.setOnClickListener(this); 
    ... 
} 

@Override 
public void onClick(View view) { 

    Intent i; 
    switch (view.getId()) { 
     case R.id.button1:      
      i = new Intent(this, SecondActivity.class); 
      i.putExtra("extra", 0); //if you want pass some info to other activity 
      startActivity(i); 
      break; 
     default: 
      break; 
    } 
} 

這樣您可以在一個功能處理更多的onclick,通過組件的id

相關問題