2013-09-25 21 views
0

您好,我對Android ADK相當陌生。我試圖從單獨的文件中的類SETUP傳入主類,即KakaMainActivity。然而,只要應用程序通過模擬器運行,它立即崩潰。請幫忙!Android應用程序:無法將方法從另一個類傳入主類

// KakaMainActivity類

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; 
    } 

} 

//設置類

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"); 
      } 
     }); 
    } 
} 
+1

崩潰總是伴隨着錯誤報告。請發佈堆棧跟蹤。 –

+0

我不明白你想做什麼,你是否想在創建KakaMainActivity時啓動一個新的SETUP活動? – lelloman

+0

你爲什麼需要'SETUP'? 'KakaMainActivity'不夠嗎? – Raghunandan

回答

0

你應該建立佈局後加載UI組件。

setContentView(R.layout.activity_kaka_main); 
sendMSG1 = (Button)findViewById(R.id.button_Send1); 
... 
RESULT = (TextView)findViewById(R.id.text_Result); 
1

幾個問題...

首先,你不應該實例化一個Activity這樣

SETUP clickAGAIN = new SETUP(); 

如果SETUP只牽你的onClick()那麼你可以把它implements OnClickListener,而不是延長任何班級。 See this answer for help with that

其次,你不能嘗試實例Views,直到你誇大你的layoutinflater或致電setContentView()。因此,改變你的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); 

此外,你應該改變RESULTresult符合Java標準(不是必要的,但好的做法)。現在它看起來像一個constant

1

初始化您的意見後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"); 
     } 
    }); 
} 

您也可以在這個活動本身

使用annonymous內部類中添加點擊監聽

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))啓動。

相關問題