2016-10-30 65 views
0

我有一個有很多代碼的類。我想把一些方法放到另一個類中,但是從我已經有的類中加載它們。我也不想改變contentview。我試圖拆分代碼到兩個類

的Class1:

public class Class1 extends Activity { 
    @Override 
    protected void onCreate (Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState; 
     Intent intent = new Intent (this, Class2.class); 
     startActivity(intent); 
    } 
} 

等級2:

public class Class2 extends Class1 { 
    @Override 
    protected void onCreate (Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     method2(); 
    } 
} 
public void method2 { 
    Log.e("Error", "Wut?") 
} 

當我運行的代碼,應用程序只是一遍又一遍地顯示錯誤消息。該應用程序可能反覆運行「method2」方法......我只想運行一次「method2」。我不希望在同一個文件中的代碼,因爲會有很多代碼...

+0

您在'Class1'的'onCreate'中的代碼開始'Class2',它再次調用啓動'Class2'的'Class1'的'onCreate',等等。你創建了一個永無止境的循環。你爲什麼試圖分開這段代碼?而且,'Class2'是否需要從'Class1'擴展?如果沒有,簡單的解決方案是'Class2'擴展'Activity' –

+0

@SvenVidak代碼長度爲3385行,我想縮短它。我想把一些代碼放在一個類中,另一些放在另一個類中。如果我嘗試擴展Activity,contentview將會改變。我想保持相同的contentview,onClickListeners一樣,但仍然從Class2加載一些方法 –

+1

那麼,那麼你希望加載方法的其他類不是一個活動,而是普通的Java類。然後,您可以在'Class1'的'onCreate'方法中創建一個對象並調用該類的方法:http://pastebin.com/pj3zVTRg –

回答

0

因爲我認爲你的方法沒有意義,所以這裏有一個解決方法。

public class Class1 extends Activity { 
@Override 
protected void onCreate (Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState; 
    if(!this instanceof Class2) 
    { 
      Intent intent = new Intent (this, Class2.class); 
      startActivity(intent); 
    } 
} 
} 
1

您所要做的就是調用對象Class中的class2。請記住,這是一個Java類。叫它!

Class2 newClass = new Class2(); 
newClass. method2(); 

的Class2中是不是一個活動,只是換了所有的方法類。它是不會擴展的什麼!