簡體   English   中英

如何在android中實例化一個也是活動的類?

[英]How do I instantiate a class in android which is also an activity?

在android中,如何為也是Activityclass創建constructor

我的問題是

我想要兩個活動類(estimateFare和Mapping),它們都將數據發送到活動類( CalculateFare )。 映射從實時網絡信息中獲取數據,而estimateFare從用戶輸入中獲取數據。 我希望CalculateFare能夠使用任何一個類中的數據來執行計算,盡管我在onCreate方法和CalculateFare的構造函數方面遇到了麻煩。 當在應用程序運行時調用該類時,我在LogCat收到以下消息;

Unable to instantiate activity ComponentInfo. 

CalculateFare的片段如下所示;

    public class CalculateFare extends Activity {
        TextView t;
        static long length;
        static int dist;
        static int mMonth;
        static int mDay;
        public static double fare;
        double rate1 = 0, rate2a, rate2b, rate3, rate4a, rate4b;
        int remDist = 0;
        double remLength;
        private static int TTS_DATA_CHECK = 1;
        private TextToSpeech tts = null;
        private boolean ttsIsInit = false;



public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.fare);

}

public CalculateFare(long length, int dist, int mMonth, int mDay)
{
}

public static void setLength(long l)
{
    length = l;
}

public static void setDist(int d)
{
    dist = d;
}

public static void setDate(int m, int d)
{
    mMonth = m;
    mDay = d;
}

public void calc()
{

任何建議,不勝感激

將數據移到一個單獨的類中,該類根本不是活動,而是在活動之間共享的。 數據可以構造為來自用戶的數據和來自網絡的數據。 有關活動之間共享數據的方法,請參見此線程

當框架需要活動時創建另一個實例時,實例化恰好是活動的CalculateFare對象將無濟於事。

在android中,如何為同時也是Activity的類創建構造函數?

你不知道

我想要兩個活動類(estimateFare和Mapping),它們都將數據發送到活動類(CalculateFare)。

除了通過startActivity()之外,所有這些類都不會互相影響。 通過Intent Extras或通過中央數據模型(例如數據庫)在活動之間傳遞數據。

在應用程序運行時調用該類時,我在LogCat中收到以下消息

那是因為您需要刪除構造函數。

我試圖實例化其內部的Activity,以將其傳遞給另一個類的方法。 我收到了OutOfMemoryError。 因此,我在Activity本身內部具有該方法,並將其作為該對象傳遞。

活動不能有用戶定義的構造函數,只有默認的構造函數; 它們只能通過意圖創建間接實例化。 如果您需要在活動之間傳遞數據,請通過將附加內容放入捆綁包中來進行處理,例如:

bundle.putInt("dist",dist);

然后您可以通過以下方式從捆綁中提取數據

int dist = bundle.getInt("dist");

開始活動之前,請多放一些東西:

Intent i = new Intent(this, CalculateFare.class);
Bundle b = new Bundle();

b.putInt("dist",dist);
i.putExtras(b);
startActivity(i);

然后閱讀onCreate方法中的其他內容:

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

   Bundle b = getIntent().getExtras();
   int dist;

   if (b != null)
   {
      dist = b.getInt("dist");
   }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM