(Android / Java)如何在活动或java类中分配字符串和共享?

时间:2015-07-12 13:01:05

标签: java android

例如,说我只有一个按钮。使用这样的XML:

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/PandR"
    android:id="@+id/PandRA">

我想在Java中做的是创建一个可以在另一个活动或Java类上访问的字符串值。这是我的Java目前的样子:

  

公共类TeamAOffense扩展了ActionBarActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_team_aoffense);
    Toast.makeText(this, "Team A's turn.", Toast.LENGTH_LONG).show();

    // Make a method that saves a value for pressing PandRA, later used in CalcForAOffBDef

    // Button for PandRA, assigning value for calculating.
    final Button pandrBttn = (Button) findViewById(R.id.PandRA);

    pandrBttn.setOnClickListener(new View.OnClickListener() {

        // Needs to save value that is later compared.

        @Override
        public void onClick(View v) {
            Intent intent = new Intent(TeamAOffense.this, ExchangeAToB.class);
            startActivity(intent);
        }
    });

    // Button for MandFA, assigning value for calculating.
    final Button mandfBttn = (Button) findViewById(R.id.MandFA);

    mandfBttn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // Needs to save value that is later compared.
            Intent intent = new Intent(TeamAOffense.this, ExchangeAToB.class);
            startActivity(intent);
        }
    });

    // Button for SandCA, assigning value for calculating.
    final Button sandcBttn = (Button) findViewById(R.id.SandCA);

    sandcBttn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // Needs to save value that is later compared.
            Intent intent = new Intent(TeamAOffense.this, ExchangeAToB.class);
            startActivity(intent);
        }
    });
}

1 个答案:

答案 0 :(得分:0)

您有两种方式:

  1. 使用Intent.putExtra(String key, String value)
  2. 使用singleton传递ObjectsString甚至是custom class
  3. <强>实施例
    例1

     Intent intent =  new Intent(TeamAOffense.this, ExchangeAToB.class);
     intent.putExtra("KEY", "Value");
     startActivity(intent);
     // and in `ExchangeAToB` class use 
     String key getIntent().getExtras().getString("KEY");`
    

    示例2

    public class MyInstance{
    private static MyInstance instance = null;
    private Object mObject;
    private MyInstance(){
    mObject = new Object();
    }
    
    public static MyInstance getInstance(){
    if(instance == null){
    instance = new MyInstance();
    }
    return instance;
    }
    
    public Object getObject(){
    return mObject;
    }
    
    public void setObject(Object obj){
    mObject = obj;
    }
    }
    // Use MyInstance.getInstance().setObject(new String()); // in activity 1
    // and Object myObject = MyInstance.getInstance().getObject(); // in activity 2
    

    **使用后不要忘记清除对象

相关问题