从java中的其他活动更改字符串的值

时间:2017-09-21 03:53:34

标签: java android string

我有两个班级“A”和班级“B”。在A级我宣布了一个 字符串密码=“admin”。现在在B类我正在从用户和i获取价值 想要在A类中更改字符串的值,并希望存储该值 用户输入。我怎样才能做到这一点?有什么帮助吗?

A级

 forgetpassword.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent j = new Intent(MainActivity.this,newpassword.class);
                    startActivity(j);

B类

 EditText newpassword;
        Button change;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_new_password);

            newpassword = (EditText)findViewById(R.id.newpassword);
            change = (Button)findViewById(R.id.chnage);



            change.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    MainActivity.b= newpassword.getText().toString();

                    Intent y= new Intent(NewPassword.this,MainActivity.class);
                    startActivity(y);



                }
            });

4 个答案:

答案 0 :(得分:1)

使用StartActivityForResult()

当您打算从活动中获得一些结果时,您应该使用startActivityForResult(intent,requestcode)

开始活动

很容易按照以下步骤进行操作

  

StartActivity

Intent i = new Intent(MainActivity.this, ForgotPasswordActivity.class);
startActivityForResult(i, 1);
  

在ForgotPasswordActivity中设置新密码

现在您处于ForgotPasswordActivity,设置新密码并返回按钮上的MainActivity,如下所示。

change.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {


                Intent y= new Intent(NewPassword.this,MainActivity.class);
                y.putExtra("someKey",newpassword.getText().toString());   //set new password
                setResult(Activity.RESULT_OK, returnIntent); // set your result
                finish(); // return back to MainActivity



            }
        });
  

在MainActivity中重新获取新密码

现在您导航回MainActivty以检索新密码覆盖onActivityResultMethod()

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

if (requestCode == 1) {
    if(resultCode == Activity.RESULT_OK){
        String newPassword=data.getStringExtra("someKey");
    }
    if (resultCode == Activity.RESULT_CANCELED) {
        //Write your code if there's no result
    }
}
}

这是startActivityForResult()

上的链接

答案 1 :(得分:0)

当您完成活动时,这可能导致上下文泄漏或NPE。 而是使用Application类并在其中初始化字符串变量,并使用localDictionary.allKeys[indexPath.row] as! Stringconst tl = new TimelineLite(); tl.staggerFromTo( [fabricObject], 1, {left: -config.width}, {left: config.width, onUpdate: () => canvas.renderAll()}, 0.4); 来访问变量。

getters()

CLASSA:

setters()

CLASSB:

public class BaseApplication extends android.app.Application{


private String admin;
    @Override
    onCreate(...){
        this.admin = "";
    }

    public String getAdmin(){
        return this.admin;
    }

    public void setAdmin(String admin){
        this.admin = admin;
    }

}

同样在您的清单文件中。

... ((BaseApplication) getApplicationContext()).setAdmin("!mpr355!v3"); ...

... String myAdmin = ((BaseApplication) getApplicationContext()).getAdmin(); ...

`...>

<强>更新

<application之前

只需致电

android:name=".BaseApplication"

在您的MainActivity中,请致电startActivity(y);

检查空指针,你很高兴! :)

答案 2 :(得分:0)

您可以在意图中将数据从一个活动发送到另一个活动,使用意图类的putExtra()方法传递数据。像这样发送数据

Intent y= new Intent(NewPassword.this,MainActivity.class);
y.putExtra("yourKey",newpassword.getText().toString())
startActivity(y);

onCreate()的{​​{1}}中,您可以使用MianActivity这样检索值

getStringExtra("yourKey")

并使用密码。

或者,您可以针对结果启动Intent callingIntent = getIntent(); String password = callingIntent.getStringExtra("yourKey"); 活动,并将数据恢复到NewPassword

onActivityResult()

并在更改按钮中单击处理程序

Intent newPasswordIntent = new Intent(this,NewPassword.class);
startActivityForResult(newPasswordIntent ,REQUEST_CODE);

公共静态变量很容易调用,请注意它们可能导致内存泄漏

答案 3 :(得分:0)

穆罕默德,

有很多方法可以做到这一点和一些列表,

  • 使用广播接收器
  • 使用结果的开始活动
  • 使用静态变量

如果你想改变很多时间,那么我认为广播接收器很好,

这是广播接收器的例子,

在您的活动中具有特定操作的注册广播接收器

 private BroadcastReceiver brodcastRec=new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            if(intent!=null && intent.getAction().equals("changePassword")){
                String newPassword=intent.getStringExtra("newPassword");
                //do whatever you want to do here after getting new password
            }
        }
    };

然后在创建活动A后写下以下代码

IntentFilter intentFilter=new IntentFilter("changePassword");
        registerReceiver(brodcastRec,intentFilter);

在您的活动B中或点击按钮事件

Intent intent=new Intent();
    intent.setAction("changePassword");
    intent.putExtra("newPassword","yourValue");
    sendBroadcast(intent);