2017-07-25 64 views
0

我一直在試圖找出我自己2天內出現的問題,但第二個活動不會啓動按鈕單擊,沒有錯誤消息,沒有空白頁面,就好像按鈕不會沒有工作,我錯過了明顯的東西嗎?新活動沒有響應

public class createMessage extends AppCompatActivity { 
    public static final String EXTRA_MESSAGE = "message"; 

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

    Button b ; 

    public void clickSend(){ 
     b = (Button) findViewById(R.id.send); 
     b.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Intent intent = new Intent(createMessage.this,receiveMessage.class); 
       startActivity(intent); 
       EditText editText = (EditText) findViewById(R.id.typeMessage); 
       String message = editText.getText().toString(); 
       intent.putExtra(EXTRA_MESSAGE, message); 
       startActivity(intent); 
      } 
     }); 
    } 
} 

次活動:

public class receiveMessage extends AppCompatActivity { 

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


     // Get the Intent that started this activity and extract the string 
     Intent intent = getIntent(); 
     String message = intent.getStringExtra(createMessage.EXTRA_MESSAGE); 

     // Capture the layout's TextView and set the string as its text 
     TextView textView = (TextView) findViewById(R.id.showMessage); 
     textView.setText(message); 
    } 
} 
+1

你在哪裏調用'clickSend'方法? –

回答

8

必須調用onCreate()方法clickSend()方法。

然後只有onClickListener將工作。

並刪除撥打startActivity(intent)兩次。

變化createMessage類,如下

public class createMessage extends AppCompatActivity { 
    public static final String EXTRA_MESSAGE = "message"; 

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

    Button b ; 

    public void clickSend(){ 
     b = (Button) findViewById(R.id.send); 
     b.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Intent intent = new Intent(createMessage.this,receiveMessage.class); 
       EditText editText = (EditText) findViewById(R.id.typeMessage); 
       String message = editText.getText().toString(); 
       intent.putExtra(EXTRA_MESSAGE, message); 
       startActivity(intent); 
      } 
     }); 
    } 
    } 
+3

在你的回答中還包括OP不需要調用'startActivity(intent);'兩次。 – Piyush

+1

@Piyush回答更新 – codeWorm

0

代碼試試這個

public class createMessage extends AppCompatActivity { 

public static final String EXTRA_MESSAGE = "message"; 
Button b ; 

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

    b = (Button) findViewById(R.id.send); 
    b.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Intent intent = new Intent(createMessage.this,receiveMessage.class); 
      EditText editText = (EditText) findViewById(R.id.typeMessage); 
      String message = editText.getText().toString(); 
      intent.putExtra(EXTRA_MESSAGE, message); 
      startActivity(intent); 
     } 
    }); 
} 


} 
0
public class createMessage extends AppCompatActivity { 
    public static final String EXTRA_MESSAGE = "message"; 
    Button b ; 
    EditText editText; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_create_message); 
     editText = (EditText) findViewById(R.id.typeMessage); 
     b = (Button) findViewById(R.id.send); 

     b.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 

       Intent intent = new Intent(createMessage.this,receiveMessage.class); 
       String message = editText.getText().toString(); 
       intent.putExtra(EXTRA_MESSAGE, message); 
       startActivity(intent); 
      } 
     }); 
    } 
    } 
2

你需要打電話給你onCreate()方法內部clickSend()方法

編輯:請檢查更新回答

public class createMessage extends AppCompatActivity { 
    public static final String EXTRA_MESSAGE = "message"; 
    Button b; 
    EditText editText; 

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

    public void clickSend(){ 
     b = (Button) findViewById(R.id.send); 
     editText = (EditText) findViewById(R.id.typeMessage); 
     b.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       String message = editText.getText().toString(); 
       Intent intent = new Intent(createMessage.this,receiveMessage.class); 
       intent.putExtra(EXTRA_MESSAGE, message); 
       startActivity(intent); 
      } 
     }); 
    } 
} 
+1

還包括你的答案,OP不需要調用'startActivity(intent);'兩次。 – Piyush

+0

@Piyush我更新了代碼 – akhilesh0707

1

已有的答案將解決問題,但我認爲你需要明白爲什麼你的方法沒有被調用。檢查文檔activity,您會看到一堆列出的方法,而onCreate就是其中之一。這些方法保證由系統爲你調用(絕不會自己調用其中一種方法),因此不需要你給它們打電話。問題是系統不知道你的方法,並且永遠不會調用它,讓這個責任掌握在你的手中。

0

你應該調用從活動的生命週期方法onCreate()clickSend()方法來初始化UI元素(如按鈕,的EditText等)。

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

2.要調用startActivity()兩次。更新clickSend()方法如下:

Button b ; 
EditText editText; 

public void clickSend(){ 
    b = (Button) findViewById(R.id.send); 
    editText = (EditText) findViewById(R.id.typeMessage); 

    b.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Intent intent = new Intent(createMessage.this,receiveMessage.class); 

      String message = editText.getText().toString(); 
      intent.putExtra(EXTRA_MESSAGE, message); 
      startActivity(intent); 
     } 
    }); 
}