2014-12-24 71 views
-3
package com.example.luke.sinhalasindu; 

import android.support.v7.app.ActionBarActivity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.app.Activity; 
import android.content.Intent; 
import android.view.Menu; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 


    public class HomePage extends Activity implements OnClickListener { 

     Button bntoartistpage; 
     Button bntonewmp3page; 


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

      bntoartistpage = (Button) findViewById(R.id.bntoartistpage); 
      bntoartistpage.setOnClickListener(this); 

      bntonewmp3page = (Button) findViewById(R.id.bntonewmp3page); 
      bntonewmp3page.setOnClickListener(this); 
     } 


     @Override 
     public void onClick(View view) { 
      Intent inent = new Intent(this, Artist.class); 

      // calling an activity using <intent-filter> action name 
      // Intent inent = new Intent("com.example.luke.sinhalasindu"); 
      startActivity(inent); } 

     @Override 

     public void onClick(View view){ 
      Intent inent = new Intent(this, NewMp3.class); 
      // calling an activity using <intent-filter> action name 
      // Intent inent = new Intent("com.example.luke.sinhalasindu"); 
      startActivity(inent); 
     } 
    } 
} 
+1

你能解釋一下問題嗎?你有什麼嘗試?你卡在哪裏? –

+0

您使用了錯誤的方法來實現按鈕onclick方法。 – Shvet

+0

我想從一個按鈕 和另一個按鈕的其他佈局打開佈局 – luke

回答

1

,而不是驗證碼:

bntoartistpage = (Button) findViewById(R.id.bntoartistpage); 
     bntoartistpage.setOnClickListener(this); 

     bntonewmp3page = (Button) findViewById(R.id.bntonewmp3page); 
     bntonewmp3page.setOnClickListener(this); 

試試這個代碼

bntoartistpage = (Button) findViewById(R.id.bntoartistpage); 
     bntoartistpage.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       Intent inent = new Intent(HomePage.this, Artist.class); 

       // calling an activity using <intent-filter> action name 
       // Intent inent = new Intent("com.example.luke.sinhalasindu"); 
       startActivity(inent); 
      } 
     }); 

bntonewmp3page = (Button) findViewById(R.id.bntonewmp3page); 
bntonewmp3page.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       Intent inent = new Intent(HomePage.this, NewMp3.class); 
       // calling an activity using <intent-filter> action name 
       // Intent inent = new Intent("com.example.luke.sinhalasindu"); 
       startActivity(inent); 
      } 
     }); 

而且也在你AndroidManifest.xml聲明這兩個ActivityArtistNewMp3像這樣的文件:

<activity android:name=" com.example.luke.sinhalasindu.Artist" /> 
<activity android:name=" com.example.luke.sinhalasindu.NewMp3" /> 
+2

您是否可以編輯答案以包含註釋,他需要在Manifest文件中註冊這些活動? –

1

不能覆蓋onClick方法兩次。無論是使用內部類setOnClickListener或使用這種方法:

@Override 
public void onClick(View view) { 
    Intent inent = null; 
    switch(v.getId()) { 
     case R.id.bntoartistpage: 
      intent = new Intent(ThisAct.this, Activity1.class);  
     break; 
     case R.id.bntonewmp3page: 
      intent = new Intent(ThisAct.this, Activity2.class);    
     break; 
    } 
    startActivity(inent); 
} 

而且在清單正確地註冊新的活動。

希望這會有所幫助。

0

另一種方法:在onclick()中使用switch-case來選擇動作。 v.getId()將返回點擊按鈕的ID。

@Override 
    public void onClick(View v) { 
     switch(v.getId()) { 
      case R.id.bntoartistpage: 
      // do stuff; 
      Intent inent = new Intent(HomePage.this, Artist.class); 
      startActivity(inent); 
      break; 
      case R.id.bntonewmp3page: 
      // do stuff; 
      Intent inent = new Intent(HomePage.this, NewMp3.class); 
      startActivity(inent); 
      break; 

    } 
+0

不工作此代碼 – luke

+0

是否按原樣使用代碼?尤其是「HomePage.this」裏面的意圖? –

+0

你有沒有在清單中註冊這些活動?如果上述所有事情都完成了,那麼你得到的錯誤是什麼? –

0

雖然我從你的代碼理解你感到困惑

如何處理多個按鈕偵聽重寫的onClick()方法?

所有你需要做的是,你必須申請任何做出邏輯決定像if-elseswitch-caseonClick()方法裏面如下

@Override 
public void onClick(View view) { 

    switch (view.getId()) { 

    case R.id.bntoartistpage: 
     Intent inent = new Intent(this, Artist.class); 
     startActivity(inent); 
     break; 

    case R.id.bntonewmp3page: 
     Intent inent = new Intent(this, NewMp3.class); 
     startActivity(inent); 
     break; 
    } 

} 
0

有使兩個或兩個以上不同的按鈕的最簡單方法做同樣的活動。

當你實現OnClickListenerActivityFragment你只需要編寫onClick()方法一次.. 也不像是一個按鈕的一種方法。你可以處理所有的OnClickListener進入該方法..

所以在你的情況下,你可以寫下你的代碼,如下所示。

public class HomePage extends Activity implements OnClickListener { 

Button bntoartistpage; 
Button bntonewmp3page; 


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

     bntoartistpage = (Button) findViewById(R.id.bntoartistpage); 
     bntoartistpage.setOnClickListener(this); 

     bntonewmp3page = (Button) findViewById(R.id.bntonewmp3page); 
     bntonewmp3page.setOnClickListener(this); 
    } 


    @Override 
    public void onClick(View view) { 

     switch (view.getId()) { 
     case R.id.bntoartistpage: 
      startActivity(new Intent(getBaseContext(), NEWCLASS.class)); 
     break; 
     case R.id.bntonewmp3page: 
      startActivity(new Intent(getBaseContext(), NEWCLASS.class)); 
     break; 
     case R.id.OTHERCASES: 
      //other functions 
     break; 

     default: 
      break; 
     } 
    } 
} 
+0

@盧克:請參考這..這可能會幫助你。 –

相關問題