[英]Using variable of one class in another class - Java
我有兩節課。 第一個是MainActivity,另一個是Orders MainActivity.java如下
public class MainActivity extends Activity implements
ProductListAdapterListener {
private static final String TAG = MainActivity.class.getSimpleName();
public String itms1,itms2,itms3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
@Override
public void onAddToCartPressed(Product product) {
if(x==0)
{
itms1=",";
}
x++;
PayPalItem item = new PayPalItem(product.getName(), 1, product.getPrice(), Config.DEFAULT_CURRENCY,product.getSku());
productsInCart.add(item);
itms2 = item.getName();
itms2=itms2.concat(", ");
itms1=itms2.concat(itms1);
Toast.makeText(getApplicationContext(),
item.getName() + " added to cart! the cart now has:" + itms1, Toast.LENGTH_LONG).show();
}
}
在這里,我試圖在另一個類 Orders.java 中使用變量 itms1,如下所示:
public class Orders extends MainActivity {
Button email, text;
public String msg=itms1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.orders);
email = (Button) findViewById(R.id.email);
text = (Button) findViewById(R.id.text);
text.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final String message = msg;
//check whether the msg empty or not
final HttpClient httpclient = new DefaultHttpClient();
final HttpPost httppost = new HttpPost("http://ramsproject.16mb.com/sendorder.php");
Thread thread = new Thread(new Runnable(){
@Override
public void run() {
try {
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("id", "01"));
nameValuePairs.add(new BasicNameValuePair("message",message));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
httpclient.execute(httppost);
Toast.makeText(getBaseContext(), "Sent", Toast.LENGTH_SHORT).show();
} catch (Exception e) {
e.printStackTrace();
}
}
});
thread.start();
}
});
}
}
在這里,當我嘗試在 Orders.java 中使用變量 itms1 時,我得到 itms1 的值為 null。 我如何使用該變量的值,就像在另一個類中的 MainActivity.java 一樣?
在這一行: public String itms1,itms2,itms3;
itms1
已聲明但從未初始化。
您獲得 null 的原因是您的變量尚未初始化,並且僅在onAddToCartPressed()
方法中onAddToCartPressed()
。
您可以通過這樣做將變量itms1聲明為公共靜態變量,這樣您就可以通過其類名(如MainActivity.itms1
)訪問它。
如果您仍有疑問,請在下面評論。
希望這會有所幫助。
您可以擁有一個 Global 類,您可以在其中存儲要跨活動訪問的變量,如下所示
公共類全局擴展應用程序 {String itms1;}
在另一個活動中訪問此字符串;
全局 g = (全局) getApplication(); 字符串 msg = g.itms1;
不要忘記在您的 AndroidMenifest.xml 中插入這一行; android:name=".Globals"
觀察該靜態變量的使用...請記住,它會存在於您的內存中,並會在不同線程之間共享。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.