[英]Android App: Cannot pass method from another class into the main class
大家好,我是Android ADK的新手。 我試圖將方法從單獨的SETUP類文件傳遞到主要類,即KakaMainActivity。 但是,只要應用程序通過模擬器運行,它就會立即崩潰。 請幫忙!
// KakaMainActivity Class
package com.example.kaka;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.Button;
import android.widget.TextView;
public class KakaMainActivity extends Activity {
Button sendMSG1 = (Button)findViewById(R.id.button_Send1);
Button sendMSG2 = (Button)findViewById(R.id.button_Send2);
TextView RESULT = (TextView)findViewById(R.id.text_Result);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_kaka_main);
SETUP clickAGAIN = new SETUP();
clickAGAIN.click();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.kaka_main, menu);
return true;
}
}
// SETUP類
package com.example.kaka;
import android.view.View;
public class SETUP extends KakaMainActivity {
public void click(){
sendMSG1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v){
RESULT.setText("First message HELLO WORLD!");
}
});
sendMSG2.setOnClickListener(new View.OnClickListener() {
public void onClick(View v){
RESULT.setText("Second message BYE BYE");
}
});
}
}
幾個問題......
首先,您不應該像這樣實例化一個Activity
SETUP clickAGAIN = new SETUP();
如果SETUP
僅用於保存onClick()
那么您可以讓它implements OnClickListener
而不擴展任何類。 請參閱此答案以獲取幫助
其次,在使用inflater
誇大layout
或調用setContentView()
之前,不能嘗試實例化Views
。 所以將你的KakaMainActivity
改為
Button sendMSG1; // you can declare them here
Button sendMSG2;
TextView RESULT;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_kaka_main);
sendMSG1 = (Button)findViewById(R.id.button_Send1); // but initialize them here
sendMSG2 = (Button)findViewById(R.id.button_Send2);
RESULT = (TextView)findViewById(R.id.text_Result);
此外,您應該將RESULT
更改為result
以符合Java標准(不是必需的,但是良好實踐)。 現在它看起來像一個constant
。
在setContentView
之后初始化您的視圖
private Button sendMSG1;
private Button sendMSG2;
private TextView RESULT;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_kaka_main);
sendMSG1 = (Button)findViewById(R.id.button_Send1);
sendMSG2 = (Button)findViewById(R.id.button_Send2);
RESULT = (TextView)findViewById(R.id.text_Result);
sendMSG1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v){
RESULT.setText("First message HELLO WORLD!");
}
});
sendMSG2.setOnClickListener(new View.OnClickListener() {
public void onClick(View v){
RESULT.setText("Second message BYE BYE");
}
});
}
您還可以在此活動本身中添加單擊偵聽器
使用匿名內部類
sendMSG1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v){
RESULT.setText("First message HELLO WORLD!");
}
});
你也有這個
SETUP clickAGAIN = new SETUP();
clickAGAIN.click();
然后
public class SETUP extends KakaMainActivity
你實例化一個你不應該做的活動類.Activity有一個ui,由startActivtiy(new Intent(param))
。
您應該在設置布局后加載UI組件。
setContentView(R.layout.activity_kaka_main);
sendMSG1 = (Button)findViewById(R.id.button_Send1);
...
RESULT = (TextView)findViewById(R.id.text_Result);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.