如何将数据传递到我的应用程序中的 activity?
How can I pass data to the activity in my app?
如果我按下通过长按文本出现的共享按钮,我想将文本发送到我的应用程序的其他活动。我转到另一个 activity,但我想要的文本没有送达。有什么问题?
这是activity的代码,写着我要传递的文字
public class MainActivity 扩展 AppCompatActivity {
EditText editText;
Intent sendIntent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = (EditText) findViewById(R.id.editText);
sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_VIEW);
editText.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
sendIntent.putExtra("TEXT", editText.getText().toString());
sendIntent.setType("text/*");
}
});
}
}
这是我的 xml 代码的意图过滤器。
<intent-filter>
<action android:name="android.intent.action.SEND" />
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER" />
<data android:mimeType = "text/*"/>
</intent-filter>
这是接收 activity 意图的部分,我想从中接收数据。
Intent receiveIntent = getIntent();
url = receiveIntent.getStringExtra("文本");
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl(url);
这是 activity 的 xml 代码的意图过滤器部分,我想在其中接收数据。
<activity android:name=".MyWebBrowser"
android:label="MyWebBrowser">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEND"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:mimeType="text/*"/>
</intent-filter>
这里有一个简单的例子供您参考:
我没有长按 editText
,而是简单地使用了一个按钮,但是,逻辑几乎保持不变:
// 主活动。从这里我们将文本从 EditText 发送到 SecondActivity。
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = findViewById(R.id.button);
EditText editText = findViewById(R.id.editText);
Intent intent = new Intent(this, SecondActivity.class);
intent.setAction("MyIntentAction");
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
intent.putExtra("TEXT", editText.getText().toString());
startActivity(intent);
finish();
}
});
}
}
// 第二个活动。从 MainActivity 接收并显示文本。
public class SecondActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
TextView textView = findViewById(R.id.textView);
Intent intent = getIntent();
if(intent.getAction().equals("MyIntentAction")) {
String str = intent.getStringExtra("TEXT");
textView.setText(str);
}
}
}
// 对于长点击检测,在 MainActivity 中添加如下代码:
editText.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
intent.putExtra("TEXT", editText.getText().toString());
startActivity(intent);
finish();
return true;
}
});
我看到您在清单中使用两个 activity has LAUNCHER
和 MAIN
。请在 manifest
.
中只使用一个
要将数据传递给您应用中的另一个 activity,您可以尝试使用 startActivity
并将您的数据放入意图数据中:
打开MyWebBrowser
:
val intent = Intent(context, MyWebBrowser::class.java)
intent.putExtra("TEXT", yourtext)
startActivity(intent)
获取 MyWebBrowser
中的文本:
override fun onCreate(savedInstanceState: Bundle?) {
...
val TEXT = intent.getStringExtra("TEXT")
textView.text = TEXT
}
如果我按下通过长按文本出现的共享按钮,我想将文本发送到我的应用程序的其他活动。我转到另一个 activity,但我想要的文本没有送达。有什么问题?
这是activity的代码,写着我要传递的文字
public class MainActivity 扩展 AppCompatActivity {
EditText editText;
Intent sendIntent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = (EditText) findViewById(R.id.editText);
sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_VIEW);
editText.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
sendIntent.putExtra("TEXT", editText.getText().toString());
sendIntent.setType("text/*");
}
});
}
} 这是我的 xml 代码的意图过滤器。
<intent-filter>
<action android:name="android.intent.action.SEND" />
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER" />
<data android:mimeType = "text/*"/>
</intent-filter>
这是接收 activity 意图的部分,我想从中接收数据。
Intent receiveIntent = getIntent(); url = receiveIntent.getStringExtra("文本");
webView.getSettings().setJavaScriptEnabled(true); webView.loadUrl(url); 这是 activity 的 xml 代码的意图过滤器部分,我想在其中接收数据。
<activity android:name=".MyWebBrowser"
android:label="MyWebBrowser">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEND"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:mimeType="text/*"/>
</intent-filter>
这里有一个简单的例子供您参考:
我没有长按 editText
,而是简单地使用了一个按钮,但是,逻辑几乎保持不变:
// 主活动。从这里我们将文本从 EditText 发送到 SecondActivity。
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = findViewById(R.id.button);
EditText editText = findViewById(R.id.editText);
Intent intent = new Intent(this, SecondActivity.class);
intent.setAction("MyIntentAction");
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
intent.putExtra("TEXT", editText.getText().toString());
startActivity(intent);
finish();
}
});
}
}
// 第二个活动。从 MainActivity 接收并显示文本。
public class SecondActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
TextView textView = findViewById(R.id.textView);
Intent intent = getIntent();
if(intent.getAction().equals("MyIntentAction")) {
String str = intent.getStringExtra("TEXT");
textView.setText(str);
}
}
}
// 对于长点击检测,在 MainActivity 中添加如下代码:
editText.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
intent.putExtra("TEXT", editText.getText().toString());
startActivity(intent);
finish();
return true;
}
});
我看到您在清单中使用两个 activity has LAUNCHER
和 MAIN
。请在 manifest
.
要将数据传递给您应用中的另一个 activity,您可以尝试使用 startActivity
并将您的数据放入意图数据中:
打开
MyWebBrowser
:val intent = Intent(context, MyWebBrowser::class.java) intent.putExtra("TEXT", yourtext) startActivity(intent)
获取
MyWebBrowser
中的文本:
override fun onCreate(savedInstanceState: Bundle?) {
...
val TEXT = intent.getStringExtra("TEXT")
textView.text = TEXT
}