有人可以告诉我如何使用getExtra()
和putExtra()
进行意图吗?实际上我有一个字符串变量,比如str,它存储一些字符串数据。现在,我想将这些数据从一个活动发送到另一个活动。
Intent i = new Intent(FirstScreen.this, SecondScreen.class);
String keyIdentifer = null;
i.putExtra(strName, keyIdentifer );
然后在SecondScreen.java
中 public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.table);
TextView userName = (TextView)findViewById(R.id.userName);
Bundle bundle = getIntent().getExtras();
if(bundle.getString("strName")!= null)
{
//TODO here get the string stored in the string variable and do
// setText() on userName
}
}
我知道这是一个非常基本的问题但不幸的是我被困在这里。 请帮忙。
谢谢,
编辑:这里我试图从一个屏幕传递到另一个屏幕的字符串是动态的。
那就是我有一个editText,我得到的字符串无论用户类型如何。然后在myEditText.getText().toString()
的帮助下。我将输入的值作为字符串,然后我必须传递此数据。
答案 0 :(得分:379)
用它来“放”文件......
Intent i = new Intent(FirstScreen.this, SecondScreen.class);
String strName = null;
i.putExtra("STRING_I_NEED", strName);
然后,要检索值,请尝试以下内容:
String newString;
if (savedInstanceState == null) {
Bundle extras = getIntent().getExtras();
if(extras == null) {
newString= null;
} else {
newString= extras.getString("STRING_I_NEED");
}
} else {
newString= (String) savedInstanceState.getSerializable("STRING_I_NEED");
}
答案 1 :(得分:64)
首先是Screen.java
text=(TextView)findViewById(R.id.tv1);
edit=(EditText)findViewById(R.id.edit);
button=(Button)findViewById(R.id.bt1);
button.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
String s=edit.getText().toString();
Intent ii=new Intent(MainActivity.this, newclass.class);
ii.putExtra("name", s);
startActivity(ii);
}
});
Second Screen.java
public class newclass extends Activity
{
private TextView Textv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.intent);
Textv = (TextView)findViewById(R.id.tv2);
Intent iin= getIntent();
Bundle b = iin.getExtras();
if(b!=null)
{
String j =(String) b.get("name");
Textv.setText(j);
}
}
}
答案 2 :(得分:46)
最佳方法......
SendingActivity
Intent intent = new Intent(SendingActivity.this, RecievingActivity.class);
intent.putExtra("keyName", value); // pass your values and retrieve them in the other Activity using keyName
startActivity(intent);
RecievingActivity
Bundle extras = intent.getExtras();
if(extras != null)
String data = extras.getString("keyName"); // retrieve the data using keyName
///接收数据的最短路径..
String data = getIntent().getExtras().getString("keyName","defaultKey");
//这需要api 12。
//第二个参数是可选的。如果keyName为null,则使用defaultkey
作为数据。
答案 3 :(得分:16)
这就是我一直在使用的,希望它可以帮助某人......简单有效。发送数据
intent = new Intent(getActivity(), CheckinActivity.class);
intent.putExtra("mealID", meal.Meald);
startActivity(intent);
获取数据
int mealId;
Intent intent = getIntent();
Bundle bundle = intent.getExtras();
if(bundle != null){
mealId = bundle.getInt("mealID");
}
喝彩!
答案 4 :(得分:7)
在Android中实施intent
非常容易。它会将您从一个活动转移到另一个活动,我们需要两个方法putExtra();
和getExtra();
现在我正在展示你的例子......
Intent intent = new Intent(activity_registration.this, activity_Login.class);
intent.putExtra("AnyKeyName", Email.getText().toString()); // pass your values and retrieve them in the other Activity using AnyKeyName
startActivity(intent);
现在我们必须从AnyKeyName
参数中获取值,下面提到的代码将有助于这样做
String data = getIntent().getExtras().getString("AnyKeyName");
textview.setText(data);
我们可以根据需要轻松设置Intent
的接收值。
答案 5 :(得分:6)
一个小附录:你不必为密钥创建自己的名字,android提供这些,f.ex。 Intent.EXTRA_TEXT
。修改接受的答案:
Intent i = new Intent(FirstScreen.this, SecondScreen.class); String strName = null; i.putExtra(Intent.EXTRA_TEXT, strName);
然后,要检索值,请尝试以下内容:
String newString; Bundle extras = getIntent().getExtras(); if(extras == null) { newString= null; } else { newString= extras.getString(Intent.EXTRA_TEXT); }
答案 6 :(得分:4)
Intent intent = new Intent(view.getContext(), ApplicationActivity.class);
intent.putExtra("int", intValue);
intent.putExtra("Serializable", object);
intent.putExtra("String", stringValue);
intent.putExtra("parcelable", parObject);
startActivity(intent);
ApplicationActivity
Intent intent = getIntent();
Bundle bundle = intent.getExtras();
if(bundle != null){
int mealId = bundle.getInt("int");
Object object = bundle.getSerializable("Serializable");
String string = bundle.getString("String");
T string = <T>bundle.getString("parcelable");
}
答案 7 :(得分:3)
@bot.command(pass_context=True)
async def kick(ctx, user: discord.Member, *, arg):
reason = arg
检查意图是否在键上包含数据。hasExtra()
。传递数据
getStringExtra()
获取数据
intent.putExtra(PutExtraConstants.USER_NAME, "user");
始终将键放在常量中作为最佳做法。
String userName;
if (getIntent().hasExtra(PutExtraConstants.USER_NAME)) {
userName = getIntent().getStringExtra(PutExtraConstants.USER_NAME);
}
答案 8 :(得分:2)
更简单
发件人方
<?php
Route::get('/', function () {
return view('welcome');
});
Route::auth();
Route::get('/home', 'HomeController@index');
Route::get('/admin', function(){
return view('admin.index');
});
Route::resource('admin/users', 'AdminUsersController');
接收方
<h1>users</h1>
<table class="table table-hover">
<thead>
<tr>
<th>Id</th>
<th>Photo</th>
<th>Name</th>
<th>Email</th>
<th>Role</th>
<th>Status</th>
<th>Created</th>
<th>Updated</th>
</tr>
</thead>
<tbody>
@if($users)
@foreach($users as $user)
<tr>
<td>{{$user->id}}</td>
<td><img scr="/images/{{$user->photo ? $user->photo->file : 'no user photo'}}"></td>
<td>{{$user->name}}</td>
<td>{{$user->email}}</td>
<td>{{$user->role->name}}</td>
<td>{{$user->is_active == 1 ? 'Active' : 'Not Active' }}"</td>
<td>{{$user->created_at->diffForHumans()}}</td>
<td>{{$user->updated_at->diffForHumans()}}</td>
</tr>
@endforeach
@endif
</tbody>
答案 9 :(得分:1)
推送数据
import android.content.Intent;
...
Intent intent =
new Intent(
this,
MyActivity.class );
intent.putExtra( "paramName", "paramValue" );
startActivity( intent );
以上代码可能位于主activity
内。 “MyActivity.class
”是我们要发布的第二个Activity
;它必须明确包含在您的AndroidManifest.xml
文件中。
<activity android:name=".MyActivity" />
拉数据
import android.os.Bundle;
...
Bundle extras = getIntent().getExtras();
if (extras != null)
{
String myParam = extras.getString("paramName");
}
else
{
//..oops!
}
在此示例中,上述代码将位于MyActivity.java
文件中。
陷阱
此方法只能传递strings
。因此,假设您需要将ArrayList
传递给ListActivity
;一种可能的解决方法是传递逗号分隔的字符串,然后将其拆分到另一端。
替代解决方案
使用SharedPreferences
答案 10 :(得分:1)
把功能
etname=(EditText)findViewById(R.id.Name);
tvname=(TextView)findViewById(R.id.tvName);
b1= (ImageButton) findViewById(R.id.Submit);
b1.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
String s=etname.getText().toString();
Intent ii=new Intent(getApplicationContext(), MainActivity2.class);
ii.putExtra("name", s);
Toast.makeText(getApplicationContext(),"Page 222", Toast.LENGTH_LONG).show();
startActivity(ii);
}
});
getfunction
public class MainActivity2 extends Activity {
TextView tvname;
EditText etname;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_activity2);
tvname = (TextView)findViewById(R.id.tvName);
etname=(EditText)findViewById(R.id.Name);
Intent iin= getIntent();
Bundle b = iin.getExtras();
if(b!=null)
{
String j2 =(String) b.get("name");
etname.setText(j2);
Toast.makeText(getApplicationContext(),"ok",Toast.LENGTH_LONG).show();
}
}
答案 11 :(得分:1)
简单, 在第一个活动 -
EditText name= (EditText) findViewById(R.id.editTextName);
Button button= (Button) findViewById(R.id.buttonGo);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(MainActivity.this,Main2Activity.class);
i.putExtra("name",name.getText().toString());
startActivity(i);
}
});
在第二个活动中 -
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
TextView t = (TextView) findViewById(R.id.textView);
Bundle bundle=getIntent().getExtras();
String s=bundle.getString("name");
t.setText(s);
}
如果需要,您可以添加if / else条件。
答案 12 :(得分:0)
单个内联代码足以完成此任务。这毫不费力地为我工作。
对于#android开发者。
String strValue=Objects.requireNonNull(getIntent().getExtras()).getString("string_Key");
答案 13 :(得分:0)
在FirstScreen.java
Intent intent = new Intent(FirstScreen.this, SecondScreen.class);
String keyIdentifier = null;
intent.putExtra(strName, keyIdentifier);
在SecondScreen.java
String keyIdentifier;
if (savedInstanceState != null)
keyIdentifier= (String) savedInstanceState.getSerializable(strName);
else
keyIdentifier = getIntent().getExtras().getString(strName);
答案 14 :(得分:0)
您可以简单地使用静态变量来存储您的edittext的字符串,然后在另一个类中使用该变量。希望这能解决您的问题
答案 15 :(得分:0)
发送
startActivity(new Intent(First.this, Secend.class).putExtra("key",edit.getText.tostring));
获取
String myData = getIntent.getStringExtra("key");
答案 16 :(得分:0)
在意图对象中放入字符串
Intent intent = new Intent(FirstActivity.this,NextAcitivity.class);
intent.putExtra("key",your_String);
StartActivity(intent);
onCreate方法中的NextAcitvity获取字符串
String my_string=getIntent().getStringExtra("key");
简便易行的方法
答案 17 :(得分:0)
先放入字符串
Intent secondIntent = new Intent(this, typeof(SecondActivity));
secondIntent.PutExtra("message", "Greetings from MainActivity");
之后检索
var message = this.Intent.GetStringExtra("message");
多数民众赞成;)