2014-09-03 33 views
0

我有兩個項目,A(主項目)和B(庫項目)。 B包含在A的構建路徑中。我必須從A的一些活動開始B的幾個活動。這工作正常,直到最近,我不得不從A的活動開始A的活動。將主項目包含在庫項目的構建路徑中的正確方法

要做我嘗試了將A添加到B的構建路徑中,但是它的作用是在無限循環中運行構建過程。顯然,這不是實現我想要的正確方法。

我的問題是,如何從主項目中包含的庫訪問主項目的類?

+1

這裏有點問題。當一個庫項目需要訪問不在庫中的東西時,實際上應該將其放入庫項目中,而不是經歷所有的麻煩。 – 2014-09-03 05:39:18

+0

好的。那麼我想實現的是不可能的? – 2014-09-03 05:39:56

+0

要回答你的問題,這是可能的。您可以使用反射來獲取該類,並使用它調用'startActivity'。但是,請注意,您的代碼將來可能會輕易破解,因爲它仍會編譯,但只會在運行時引發錯誤。 – 2014-09-03 05:42:47

回答

0

嘗試將活動.class實例作爲參數發送給B. 然後,您可以使用StartActivity(context , class)開始它。

+0

不僅活動,還有其他類。也許有可能開始這樣的活動,但你的解決方案只適用於活動。另外,我也想把'東西'發送給A.發送一種方式正在工作 – 2014-09-03 05:32:54

0

反射是一種方法,但它不夠好。一種可能的方式是,使活動在庫項目摘要:

在項目B(庫proejct)

public abstract class LibraryActivity extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     // Set up activity 
     // Suppose you want to start the activity when a button is clicked 
     Button btn = (Button)findViewById(R.id.btn); 
     btn.setOnClickListener(new OnClickListener(){ 
      @Override 
      public void onClick(View v) { 
       startOtherActivity(); 
      } 
     }); 
    } 

    public abstract void startOtherActivity(); 
} 

在您的主項目實現抽象功能活動:

public class LibraryActivityImpl extends LibraryActivity { 
    @Override 
    public void startOtherActivity() { 
     startActivity(new Intent(this, MainProjectActivity.class)); 
    } 
} 

現在你的主要項目,開始LibraryActivityImpl而不是LibraryActivity

這樣,您不必擔心對圖書館項目未知的類的奇怪訪問。

相關問題