簡體   English   中英

如何將一個活動的edittext字符串傳遞給另一個活動中的方法?

[英]How to pass an edittext string from an activity to a method in another activity?

我有2個EditTexts,我想復制這些EditTexts的String並在另一個活動的方法中使用它們。

我正在制作一個應用程序,該應用程序在兩個EditText中鍵入一些詳細信息,並具有一個按鈕,用於復制這兩個EditText的String並將其粘貼或使用在另一個Activity的RecyclerView中。

我嘗試了Intent和Bundle方法,但無法解決,實際上很難安排代碼的結構。

這是我想通過的活動:

btn_save.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (etTitle.length() != 0 || etDes.length() != 0){
                addData();
            }else {
                Toast.makeText(DataInput.this, "Please Add Data !", Toast.LENGTH_SHORT).show();
            }
        }
    });
}

private void addData() {
    String titled = etTitle.getText().toString();
    String desed = etDes.getText().toString();
    Intent inte = new Intent();
    Bundle bund = new Bundle();
    bund.putString("title", titled);
    bund.putString("des", desed);
    inte.putExtras(bund);
    startActivity(inte);
}

這是我想接受的活動:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.activity_main);

    FloatingActionButton fab = findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent = new Intent(getApplicationContext(), DataInput.class);
            startActivity(intent);
        }
    });

    recyclerView = findViewById(R.id.rv);

    dAdapter = new DataAdapter(dataList);
    RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getApplicationContext());
    recyclerView.setLayoutManager(layoutManager);
    recyclerView.setItemAnimator(new DefaultItemAnimator());
    recyclerView.setAdapter(dAdapter);
}

public void sendData() {
    Bundle bundle = getIntent().getExtras();
    String addedTitle = bundle.getString("title");
    String addedDes = bundle.getString("dec");
    Data data = new Data(addedTitle, addedDes);
    dataList.add(data);
    dAdapter.notifyDataSetChanged();
}

我想要的只是將意圖和包從第一個Activity中的addData方法傳遞到第二個Activity中的sendData方法,因此我可以使用Strings在Data構造函數中傳遞它們。

要從EditText檢索文本,可以使用editText.getText().toString()

使用捆綁或意圖。

// From activity1 to activity2
    Intent intent = new Intent(Activity1.this, Activity2.class);
    Bundle bundle = new Bundle();
    bundle.putString(<key>, <value>);
    intent.putExtras(bundle);
    startActivity(intent);

    // in activity 2 onCreate
    Bundle bundle = intent.getExtras();
    if (bundle != null) {
        // get the value from bundle based on key
    }

這是在活動之間傳遞數據的簡短示例

我建議您按照以下方式更改您的實現,以免我們意外避免密鑰不匹配問題。

    @Override
    public void onClick(View v) {
        if (etTitle.length() != 0 || etDes.length() != 0){
            String title = etTitle.getText().toString();
            String description = etDes.getText().toString();
            Activity2.launch(this,title,description);
        } else {
            Toast.makeText(DataInput.this, "Please Add Data !", Toast.LENGTH_SHORT).show();
        }
    }

在調用活動中,您可以創建幫助器方法,例如如下所述啟動。

    public static final String KEY_TITLE = "title";
    public static final String KEY_DESCRIPTION = "description";

    public static void launch(Context context, String title, String description) {
        Intent intent = new Intent(context, Activity2.class);
        Bundle data = new Bundle();
        data.putString(KEY_TITLE, title);
        data.putString(KEY_DESCRIPTION, description);
        intent.putExtras(data);
        context.startActivity(intent);
    }

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Bundle bundle = intent.getExtras();
        if (bundle != null) {
            String title = bundle.getString(KEY_TITLE);
            String description = bundle.getString(KEY_DESCRIPTION);
        }
    }

要從EditText檢索文本,請使用

String value = editText.getText().toString();

然后通過意圖或捆綁傳遞鍵值對

Intent in = new Intent(Activity1.this, Activity2.class);
in.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
in.putExtra("key", value);
startActivity(in);

接受把它放在新活動中

String string_name = getIntent().getExtras().getString("key");

更新:密鑰不匹配,您以“ des”發送密鑰,以“ dec”接收

暫無
暫無

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

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