2016-08-02 51 views
-4

安卓工作室寫了XML代碼uDate公司的看法時,按一下按鈕發生,但我得到錯誤。請幫忙。問題與方法的onClick

XML代碼:

<Button 
    android:id="@+id/next_button" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="submit" 
    android:layout_marginTop="16dp" 
    android:onClick="order"/> 

Java代碼:

 public void order(View view) { 
      int quantity = 2; 
      display(quantity); 
      displayPrice(quantity * 5); 
     } 

日誌貓:

11月8日至二日:58:00.775 25553-25553/com.example.android .justjava E/AndroidRuntime:致命例外:main ****進程:com.example.android.justjava,PID:25553 java.lang.IllegalStateException:無法在父代或祖先中查找方法順序(View)上下文中的android:onClick屬性定義在視圖類android.support.v7.widget.AppCompatButton上,id爲'next_button'**** at android .support.v7.app.AppCompatViewInflater $ DeclaredOnClickListener.resolveMethod(AppCompatViewInflater.java:327) at android.support.v7.app.AppCompatViewInflater $ DeclaredOnClickListener.onClick(AppCompatViewInflater.java:284) at android.view.View.performClick (View.java:5233) at android.view.View $ PerformClick.run(View.java:21209) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage (Handler.java:95) at android.os.Looper.loop(Looper.java:152) at android.app.ActivityThread.main(ActivityThread.java:5497) at java.lang.reflect.Method.invoke(Native Method) at com .android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:726) 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

+0

你把訂單功能放在哪裏? – kggoh

+0

請發佈您的所有活動代碼 –

回答

-2

使用該樣本按鈕控制:

public class MainActivity extends ActionBarActivity { 
Button b1; 

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

    b1=(Button)findViewById(R.id.button); 
    b1.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     Toast.makeText(MainActivity.this,"YOUR MESSAGE",Toast.LENGTH_LONG).show(); 
    } 
    }); 
} 
} 
0

Remo從xml中獲得android:onClick="order"行,並從活動中刪除order方法。

將此代碼放入您的OnCreate活動方法中。

Button btnNext = (Button) findViewById(R.id.next_button); 
btnLogin.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick (View v) { 
       int quantity = 2; 
       display(quantity); 
       displayPrice(quantity * 5); 
      } 
     }); 
0

我已經感覺它的簡單問題,請確保您撥打public void order(View view),你使用膨脹佈局setContentView(R.layout.main);

main.xml中

<?xml version="1.0" encoding="utf-8"?> 
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical" > 
    <!-- your button --> 
    <Button 
     android:id="@+id/next_button" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="submit" 
     android:layout_marginTop="16dp" 
     android:onClick="order"/> 
    <!--other view goes here ..... --> 

    </LinearLayout> 

Java代碼

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
} 

public void order(View v){ 
// make toast only to testing , then add your method later 
}