如何从第一个活动的文本视图中获取数据并从另一个活动中发布数据?

时间:2018-11-25 11:08:36

标签: java android mysql android-studio android-intent

我希望第二个活动中的textview数据通过第三个活动,但我不想在第三个活动中显示它。在最后一个活动中单击按钮后,我想直接将第二个活动中的数据发送到sql db中的Pass。是可以实现的吗? 这是我的第一次活动。

public class MainActivity extends AppCompatActivity {
private EditText email, password;
private Button btn_login;
private ProgressBar loading;
private static String URL_LOGIN ="http://192.168.1.83/Attendance/login.php";

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

    loading= findViewById(R.id.loading);
    email = findViewById(R.id.editTextUserEmail);
    password = findViewById(R.id.editTextPassword);
    btn_login = findViewById(R.id.buttonRegister);


    btn_login.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String mEmail = email.getText().toString().trim();
            String mPassword = password.getText().toString().trim();

            if (!mEmail.isEmpty() || !mPassword.isEmpty()) {
                Login(mEmail, mPassword);
            }else{
                email.setError("Please Enter Email");
                password.setError("Please Enter Password");

            }


        }
    });

}

private void Login(final String email, final String password) {
    loading.setVisibility(View.VISIBLE);
    btn_login.setVisibility(View.GONE);

    StringRequest stringRequest = new StringRequest(Request.Method.POST, URL_LOGIN,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    try {
                        JSONObject jsonObject = new JSONObject(response);
                        Log.d("JSON", jsonObject.toString());
                        String success = jsonObject.getString("success");
                        JSONArray jsonArray = 
jsonObject.getJSONArray("login");

                        if (success.equals("1"))
                        {
                            for (int i = 0; i<jsonArray.length(); i++){
                                JSONObject object = 
jsonArray.getJSONObject(i);

                                String name = 
object.getString("name").trim();
                                String email = 
object.getString("email").trim();

//                                    Toast.makeText(MainActivity.this, 
"Success Login \nYour name: "+name+"\nYour Email: "+email,
 //                                            Toast.LENGTH_LONG).show();
                                Intent intent = new 
  Intent(MainActivity.this, HomeActivity.class);
                                intent.putExtra("name",name);
                                intent.putExtra("email", email);
                                startActivity(intent);
                              loading.setVisibility(View.GONE);


                            }

                        }

                    } catch (JSONException e) {
                        e.printStackTrace();
                        loading.setVisibility(View.GONE);
                        btn_login.setVisibility(View.VISIBLE);
                        Toast.makeText(MainActivity.this, "Error" 
 +e.toString(),
                                Toast.LENGTH_LONG).show();

                    }

                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    Toast.makeText(MainActivity.this, "Error" 
+error.toString(),
                            Toast.LENGTH_LONG).show();

                }
            })
    {
        @Override
        protected Map<String, String> getParams() throws AuthFailureError {
            Map<String, String> params = new HashMap<>();
            params.put("email", email);
            params.put("password", password);
            return params;
        }
    };
    RequestQueue requestQueue = Volley.newRequestQueue(this);
    requestQueue.add(stringRequest);

}

这是我的第二项活动

public class HomeActivity extends AppCompatActivity {
private TextView name,email;
private TextView welcome;
private Button Send;

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

    name = findViewById(R.id.name);
    email = findViewById(R.id.email);
    Send = findViewById(R.id.btn_send);
    welcome = findViewById(R.id.welcome);

    final Intent intent = getIntent();
    String extraName = intent.getStringExtra("name");
    String extraEmail = intent.getStringExtra("email");


    name.setText(extraName);
    email.setText(extraEmail);

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

            Intent intent1 = new Intent(HomeActivity.this,StatusActivity.class);
            intent1.putExtra("wel", welcome.getText().toString());
            intent1.putExtra("name1", name.getText().toString());
            intent1.putExtra("email1", email.getText().toString());
            startActivity(intent1);


        }
    });
}

这是我最后的活动,但是在这里我不想显示文本视图,我只想从此处发布。

public class StatusActivity extends AppCompatActivity {
private TextView welcome, name, email;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_status);
    welcome = findViewById(R.id.abcd);
    name = findViewById(R.id.name1);
    email = findViewById(R.id.email1);

    final Intent intent = getIntent();
    String extraName1 = intent.getStringExtra("name1");
    String extraEmail1 = intent.getStringExtra("email1");
    String extraWelcome = intent.getStringExtra("wel");


    name.setText(extraName1);
    email.setText(extraEmail1);
    welcome.setText(extraWelcome);


}

2 个答案:

答案 0 :(得分:2)

在将MySql用作主题之前,您的问题非常清楚。为什么要通过数据库将数据从一个活动传递到另一个活动。为什么要涉及需要大量时间和资源的数据库操作。

您可以通过Intent(原始值StringParcelable)将数据从一个活动传递到另一活动!

您要做的就是:

  1. 获取数据(从TextView中获取情况)。
  2. 创建意图以导航到下一个活动。
  3. 将数据放入Intent。
  4. 开始活动。
  5. 从Intent中检索数据。

例如,如果要通过单击按钮导航到下一个活动,然后在该按钮的onClick()中:

// 1.
String data = myTextView.getText();
// 2. 
Intent intent = new Intent(yourContext,YourNextActivity.class);
// 3.
intent.putStringExtra("MY DATA KEY",data);
// 4.
yourContext.startActivity(intent);
// 5. Now in YourNextActivity's onCreate();
String retrievedData = YourNextActivity.this.getIntent().getStringExtra("MY DATA KEY");

// Done! 

答案 1 :(得分:-1)

如果要保存活动“ a”中的数据以便将其从活动“ b”中推送到服务器,则可以使用“共享首选项”

使用共享首选项保存数据

  PreferenceManager.getDefaultSharedPreferences(MainActivity.this)
            .edit()
            .putString(key, value).apply();

(从每个活动中)获取保存的数据

PreferenceManager.getDefaultSharedPreferences(DriverScreen.this).getString(key, "default value")