我有两节课。第一个是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中使用该变量的值?
答案 0 :(得分:0)
在这一行:public String itms1,itms2,itms3;
itms1
已声明,但从未初始化。
您获得null的原因是因为您的变量尚未初始化,并且只在onAddToCartPressed()
方法中取值。
答案 1 :(得分:0)
您可以将变量 itms1 声明为公共静态,这样您就可以通过其类名访问它(例如MainActivity.itms1
)。
如果你仍然怀疑以下评论。
希望这会有所帮助。
答案 2 :(得分:0)
您可以在其中设置一个Global类,您可以在其中存储要跨活动访问的变量,如下所示
公共类Globals扩展了Application {String itms1;}
在另一个活动中访问此字符串;
Globals g =(Globals)getApplication(); String msg = g.itms1;
不要忘记在AndroidMenifest.xml中插入此行; 机器人:名称= “全局”
答案 3 :(得分:0)
观察静态变量的使用......记住它将存在于你的记忆中并将在不同的线程之间共享。