[英]How to create a DatePicker from class which do not extends Activity, Android?
[英]How do I instantiate a class in android which is also an activity?
在android中,如何為也是Activity
的class
創建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.