2012-11-20 146 views
0
main.xml 
-------- 
|button1| (button press)>page1.xml 
|button2| (button press)>page2.xml 
|button3| (button press)>page3.xml 
|button4| (button press)>page4.xml 
|button5| (button press)>page5.xml 
|button6| (button press)>page6.xml 
------------------------------------------- 

當單擊按鈕時,它會轉到相應的頁面。什麼是最好/最簡單的方法來實現這一點?當我嘗試onclick聽衆時,我試過一切都無濟於事。我可以讓一個聽衆工作,但當我試圖獲得一個以上的聽衆時,它會混亂起來,我無法弄清楚。 我當前方法是使用這些2個java文件
activity1.java帶onclick聽衆的Android按鈕導航

package install.fineline; 

import android.app.Activity; 
import android.content.Context; 
import android.content.Intent; 

import android.widget.Button; 
import android.view.View; 
import android.view.View.OnClickListener; 

public class Activity1 extends Activity { 

Button Button1; 
Button Button2; 
Button Button3; 
Button Button4; 
Button Button5; 
Button Button6; 



public void addListenerOnButton() { 

final Context context = this; 

Button1 = (Button) findViewById(R.id.autobody); 

Button1.setOnClickListener(new OnClickListener() { 

    @Override 
    public void onClick(View arg0) { 

     Intent intent = new Intent(context, Activity2.class); 
     startActivity(intent); 

    } 

}); 

Button2 = (Button) findViewById(R.id.glass); 

Button2.setOnClickListener(new OnClickListener() { 

    @Override 
    public void onClick(View arg0) { 

     Intent intent = new Intent(context, Activity2.class); 
     startActivity(intent); 

    } 

}); 

Button3 = (Button) findViewById(R.id.wheels); 

Button3.setOnClickListener(new OnClickListener() { 

    @Override 
    public void onClick(View arg0) { 

     Intent intent = new Intent(context, Activity2.class); 
     startActivity(intent); 

    } 

}); 

Button4 = (Button) findViewById(R.id.speedy); 

Button4.setOnClickListener(new OnClickListener() { 

    @Override 
    public void onClick(View arg0) { 

     Intent intent = new Intent(context, Activity2.class); 
     startActivity(intent); 

    } 

}); 

Button5 = (Button) findViewById(R.id.sevan); 

Button5.setOnClickListener(new OnClickListener() { 

    @Override 
    public void onClick(View arg0) { 

     Intent intent = new Intent(context, Activity2.class); 
     startActivity(intent); 

    } 

}); 

Button6 =(按鈕)findViewById(R.id.towing);

Button6.setOnClickListener(新OnClickListener(){

@Override 
public void onClick(View arg0) { 

    Intent intent = new Intent(context, Activity2.class); 
    startActivity(intent); 

} 

}); 

}} 

,這裏是我的其他Java文件

activity2.java
包install.fineline;

import android.app.Activity; 
import android.os.Bundle; 
import android.widget.Button; 

public class Activity2 extends Activity { 

Button button1; 

public void onCreate1(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.autobody); 
} 
Button button2; 

public void onCreate2(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.glass); 
} 
Button button3; 

public void onCreate3(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.wheels); 
} 
Button button4; 

public void onCreate4(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.speedy); 
} 
Button button5; 

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

Button button6; 

public void onCreate6(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.towing); 
}} 
+3

,只是不喜歡這個工作。你必須回到android hello世界並從那裏前進。 android不知道你的onCreate1,2,3。它只知道onCreate。你會做什麼是完全使用不同的活動。 – njzk2

回答

0

你肯定這樣做是錯誤的,你所有的按鈕都會調用同一個活動,如果你想讓它們變成不同的p鞋帶,創造不同的活動。如果您希望他們使用不同的數據訪問同一地點,請使用意圖將信息作爲額外信息發送。

另外,爲了便於閱讀,您可能想了解XML定義的點擊式方法。

1

您應該爲每個頁面定義一個活動。所以共有7個活動,包括主要活動。在主要活動中,定義單個onClickListener以處理所有點擊。

class ClickListener implements View.OnClickListener { 
    void onClick(View v) { 
     switch(v.getId()) { 
     case R.id.btn_1: 
      ... 
      break; 
     ... 
     } 
    } 

將此偵聽器設置爲所有6個按鈕。

0

好了,第一關,實行OnClickListener,你就必須添加unemplemented方法onClick()

public class Activity1 extends Activity implements OnClickListener { 

然後初始化按鈕,並在您onCreate()

Button1 = (Button) findViewById(R.id.autobody); 
Button1.setOnClickListener(this); 

添加點擊監聽到他們然後在onClick()設置一個開關/外殼

@Override 
public void onClick(View v) { 
    // TODO Auto-generated method stub 
    switch (v.getId()) { 
    case R.id.autobody: 
     // do code 
     break; 
    case R.id.glass: 
     // do code 
     break; 
    } 
} 

我只是做了一些你的按鈕,但你可以找出其餘的。只要確保初始化並將onClickListeners添加到它們全部在onCreate()

0

不要使用按鈕來實現此功能。使用ListView及其onItemClickListener,您將獲得單擊的行的編號。然後,您可以使用ViewPager根據點擊來顯示頁面。

0

首先,這不是你的問題,但使代碼方式更易於閱讀和保存內存:製作一個onClickListener並在那裏檢查哪個按鈕被點擊。

class Activity1 extends Activity implements onClickListener { 

    public void onClick(View v) { 
     switch (v.getId()) { 
     case R.id.button1: 
      // handle button1 press 
     case R.id.button2: 
      // ... 
     } 
    } 
} 

我們真正的問題:在你的第二個活動,Android不知道任何onCreate1(),onCreate2()等函數。取而代之的是,你必須實現的onCreate()(它的Android不知道),並把它的意圖是按下的按鈕,像這樣:

// You can just take your activity object as the context, 
// no need to convert explicitly. 
Intent i = new Intent(this, Activity2.class); 
i.putExtra("button", 1); 
startActivity(i); 

在這裏領取您的活動的數據:

public void onCreate() { 
    int button = getIntent.getIntent().getInt("button"); 
} 
0
  1. 從活動1更改您的OnClick方法與單個開關的情況下
  2. 傳遞數據是這樣的:

    intent.putExt ra(「buttonClick」,buttonnumber); startActivity(intent);

  3. 接收數據中活性2是這樣的:。

    clickedButton = getIntent()getExtras()的getString( 「buttonClick」);

  4. 更改方法名的OnCreate在活性2