我剛開始學習Java和Android Development
就在一個星期前,我有幾個基本的東西,我想知道。android:是否有可能從MainActivity類繼承?
我的應用程序的功能是它有10個按鈕,每個按鈕被點擊一次後被禁用。如果總共點擊5個按鈕,則必須禁用所有按鈕。 我沒有使用按鈕數組,但我想知道爲什麼這不起作用。 (所有必需的進口量已經制造)
的
MainActivity
類是這樣的:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
StartText();
}
Class1 c1object = new Class1();
TextView textobj;
Button Button1,Button2,Button3,Button4 /* similarly for the other 6 buttons*/ ;
public void StartText(){
textobj = (TextView)findViewById(R.id.textView);
textobj.setText("No Button has been clicked");
}
public void Click1(View view)
{
Button1 = (Button)findViewById(R.id.button1);
c1object.disablebutton(Button1,textobj,1);
}
public void Click2(View view)
{
Button2 = (Button)findViewById(R.id.button2);
c1object.disablebutton(Button2,textobj,2);
}
public void Click3(View view)
{
Button3 = (Button)findViewById(R.id.button3);
c1object.disablebutton(Button3,textobj,3);
}
public void Click4(View view)
{
Button4 = (Button)findViewById(R.id.button4);
c1object.disablebutton(Button4,textobj,4);
}
// Similarly for 6 more buttons
}
Class1
是這樣的:
public class Class1 {
Class2 c2object = new Class2();
private int Clickcount=0;
public void disablebutton(Button b, TextView t, int i) {
b.setEnabled(false);
String str = Integer.toString(i);
t.setText("You clicked button: " + str);
Clickcount++;
if(Clickcount==5)
c2object.disableAll();
}
}
最後,
Class2
是這樣的:
public class Class2 {
MainActivity mainobject = new MainActivity();
public void disableAll(){
mainobject.Button1.setEnabled(false);
mainobject.Button2.setEnabled(false);
mainobject.Button3.setEnabled(false);
mainobject.Button4.setEnabled(false);
//Similarly for the other 6 buttons
}
}
如果我運行此我的應用程序啓動,但一個白色的屏幕顯示和應用程序關閉。
經過多次嘗試,我意識到它總是在我創建MainActivity
類的對象時發生。 我甚至嘗試繼承MainActivity
,但結果是一樣的。
我也試圖改變Class2
這樣:
public class Class2 {
public void disableAll(){
Button b1 = (Button)findViewById(R.id.button1);
b1.setEnabled(false);
//Similarly for the other 9 buttons
}
}
我發現我不能使用findViewById
這裏。
這是我想知道的事情:
,我們是否可以繼承或創建的
MainActivity
對象?爲什麼我不能使用
MainActivity
以外的其他課程的findViewById
?如何在
Clickcount==5
之後禁用所有按鈕?你已經看到了我的編碼方式。我需要遵循的任何做法?任何其他建議,使我的編碼方式更好?
感謝您提前給予的幫助!
禁用按鈕,if語句,其中有一個if(Clickcount == 5){myButton.setEnabled(false); }並根據需要爲其設置多個按鈕。此外,我不會建議圍繞創建MainActivity類的實例來構建您的代碼。如果您需要創建對象的實例,請創建另一個類來完成此操作。雖然我不確定findViewById部分。 – Michael
這就是我所做的。問題是我無法從這個類訪問myButton而不創建MainActivity的對象。但是這樣做會讓我的應用崩潰。 –
您可以嘗試製作MainActivity靜態並將所有禁用按鈕代碼放入MainActivity中的靜態方法中。只是所以你不必實例化。當它崩潰時,你會得到什麼錯誤? – Michael