簡體   English   中英

多個活動和按鈕?

[英]Multiple activities and buttons?

一旦我點擊按鈕,我想制作按鈕我去另一個活動? 問題是只有第一個按鈕正常工作!

public class Main extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        Button PageOneButton = (Button) findViewById(R.id.btnPageOne);
        PageOneButton.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                Intent myIntent = new Intent(v.getContext(), PageOne.class);
                v.getContext().startActivity(myIntent);

                Button PageTwo = (Button) findViewById(R.id.btnPageTwo);
                PageTwoButton.setOnClickListener(new View.OnClickListener() {   
                    public void onClick(View v) {
                        Intent myIntent = new Intent(v.getContext(), PageTwo.class);
                        v.getContext().startActivity(myIntent); 
                    }
                    {}
                });
            }
        });
    }
}

認為這是因為大多數代碼都在第一個onClickListener的范圍內關閉,嘗試這樣的事情。

Button PageOneButton = (Button) findViewById(R.id.btnPageOne);
PageOneButton.setOnClickListener(new View.OnClickListener(){


    public void onClick(View v) {
        Intent myIntent = new Intent(Main.this, PageOne.class);
        startActivity(myIntent);

});


Button PageTwoButton = (Button) findViewById(R.id.btnPageTwo);
PageTwoButton.setOnClickListener(new View.OnClickListener(){

    public void onClick(View v) {
        Intent myIntent = new Intent(Main.this, PageTwo.class);
        startActivity(myIntent);

});

使用v.getContext()應該沒問題,這正是我通常會做的,因為Activity本身確實是一個有效的上下文。 我想這對我來說似乎更具可讀性。

編輯:

就像對代碼當前狀態的澄清一樣。 僅在按下第一個按鈕后,才會為第二個按鈕分配onClickListener。 但是,由於第一個按鈕將應用程序帶到一個新的Activity,固有地破壞了主要活動,第二個按鈕永遠不會有機會到達它的onClickListener。

希望它有意義,但上面的代碼應該解決問題。

您的代碼中目前存在一些問題。 第一個問題是你的第二個按鈕是在第一個按鈕的聲明中定義的。 下一個問題是您將第二個OnClickListener設置為錯誤命名的按鈕。 您已經輸入了一個拼寫錯誤,而不是PageTwo,你稱之為Button(可能你想按照第一個Button調用它的PageTwoButton),然后將OnClickListener設置為PageTwoButton。 看到你也在使用多個按鈕,使用GroupOnClickListener會更清晰,更有效。 在設置你的Intents時,我可能還建議使用'this'代替'v.getContext()'。 將代碼更改為:

Button PageOneButton = (Button) findViewById(R.id.btnPageOne);
Button PageTwoButton = (Button) findViewById(R.id.btnPageTwo);
PageOneButton.setOnClickListener(addGroupOnClickListener);
PageTwoButton.setOnClickListener(addGroupOnClickListener);    

private OnClickListener addGroupOnClickListener = new OnClickListener() {
    public void onClick(View v) {
        if (v == PageOneButton) {
            Intent myIntent = new Intent(Main.this, PageOne.class);
            startActivity(myIntent);
        } else if (v == PageTwoButton) {
            Intent myIntent = new Intent(Main.this, PageTwo.class);
            startActivity(myIntent);
        }  
   }
};

希望這可以幫助!

兩個字:

代碼縮進

如果你正確地縮進你的代碼,你會注意到你正在設置OnClickListener INSIDE你的第一個按鈕的監聽器。 正如其他人已經建議的那樣,將它移到第一個聽眾之外。

還有一對{},這是多余的。

此外,@ edwoollard注意到,對於第二個按鈕,您使用兩個不同的名稱,PageTwo和PageTwoButton。 記住這一點,除非這是一個錯字。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM