簡體   English   中英

如何從第一個活動的文本視圖中獲取數據並從另一個活動中發布數據?

[英]How to get data from text view in first activity and post it from another activity?

我希望第二個活動中的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);


}

在將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! 

如果要保存活動“ a”中的數據以便將其從活動“ b”中推送到服務器,則可以使用“共享首選項”

使用共享首選項保存數據

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

獲取您保存的數據(來自每個活動)

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM