簡體   English   中英

意圖對象如何在android中的兩個Activity之間保持/傳輸數據?

[英]How intent object keep/transfer data between two Activity in android?

我有這兩個活動,每個都在單獨的文件中:

 public class MainActivity extends AppCompatActivity {
        public final static String EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE";
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }

        /** Called when the user clicks the Send button */
        public void sendMessage(View view) {
            Intent intent = new Intent(this, DisplayMessageActivity.class);
            EditText editText = (EditText) findViewById(R.id.edit_message);
            String message = editText.getText().toString();
            intent.putExtra(EXTRA_MESSAGE, message);
            startActivity(intent);
        }
    }

    public class DisplayMessageActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_display_message);

       Intent intent = getIntent();
       String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
       TextView textView = new TextView(this);
       textView.setTextSize(40);
       textView.setText(message);

       ViewGroup layout = (ViewGroup) findViewById(R.id.activity_display_message);
       layout.addView(textView);
    }
    }

在MainActivity中,我們創建Intent對象並保存一些數據,在DisplayMessageActivity我們使用getIntent()方法獲得此intent,然后此方法返回給我們Intent對象。我的問題是,該方法如何將與我們在MainActivity創建的Intent一起返回給我們??

您必須在MainActivity中實現onActivityResult並使用startActivityForResult啟動DisplayMessageActivity:

... sendMessage(View view) {
    ...
    startActivityForResult(intent, MESSAGE_RESULT_CODE);
}

public void onActivityResult(int requestcode, int resultcode, Intent data) {
    //You can get your result intent data here
    if (requestcode == MESSAGE_RESULT_CODE && resultcode == RESULT_OK) {
        Intent intent = getIntent();
        String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
    }
}

只需在onPauseonStoponBackPressedonSupportNavigateUp添加DisplayMessageActivity:

//in your case maybe 'your_intent_sent_back_to_mainactivity = getIntent();'
setResult(RESULT_OK, your_intent_sent_back_to_mainactivity);


另外

Android開發者社區中的源代碼:

https://developer.android.com/training/basics/intents/result.html

根據官方文檔,獲取意圖是用來

返回啟動此活動的意圖。

這意味着它是一個返回最初啟動該活動的意圖的函數。 回答您的查詢。

Android開發人員文檔-活動-getIntent()

閱讀官方文檔始終是一個好習慣。

添加附加內容的常規語法為:

Intent intent = new Intent(context, activity.class); //Create intent to start activity
intent.putExtra("key", data); //adding data
startActivity(intent);

要接收該數據,請從您開始的活動中:

Intent intent = getIntent();
String data = intent.getExtra("key");

String變量-數據將保存您在上一個活動中附加的值。 這意味着,您只能在下一個活動之前使用此方法。

暫無
暫無

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

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