Ale*_*kov 5 android android-intent android-activity
这个问题花了我几天的头脑,没有用.总之,我有两个Activities
对我会打电话给他们的例子的缘故MainActivity
和SearchActivity
.该MainActivity
有一个按钮,带你到一个搜索屏幕这是SearchActivity
有我有,我想传递回预设值的按钮MainActivity
.到现在为止还挺好.我在调试器中单击按钮我可以看到我的额外值和下一个断点在onCreate中MainActivity
当我得到额外的东西时什么都没有,没有,全部消失了.所以这里是重要的部分,代码:
MainActivity.class
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btnSearch.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent search = new Intent(v.this, SearchActivity.class);
startActivityForResult(search, SEARCH_VIDEO_REQUEST);
}
});
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == SEARCH_VIDEO_REQUEST) {
if (resultCode == RESULT_OK) {
String url = data.getExtras().getString("VIDEO_URL");
if (url != null) {
txtUrl.setText(url);
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
SearchActivity.class
public class SearchActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
btnSend.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
String videoUrl = "http://video-url.com";
Intent data = new Intent(SearchActivity.this, MainActivity.class);
data.putExtra("VIDEO_URL", videoUrl);
setResult(RESULT_OK, data);
finish();
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
AndroidManifest.xml中
<activity
android:name="com.project.MainActivity"
android:label="@string/app_name"
android:configChanges="keyboardHidden|orientation|screenSize"
android:theme="@android:style/Theme.Black.NoTitleBar"
android:screenOrientation="portrait">
<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/plain"/>
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.MEDIA_MOUNTED"/>
<data android:scheme="file"/>
</intent-filter>
</activity>
<activity
android:name="com.project.SearchActivity"
android:label="@string/app_name"
android:theme="@android:style/Theme.NoTitleBar"
android:screenOrientation="portrait">
</activity>
Run Code Online (Sandbox Code Playgroud)
问题在于类返回结果。
正如米克尔在另一个答案中指出的:
Intent(Context packageContext, Class cls) 在 API 级别 1 中添加
为特定组件创建意图。所有其他字段(操作、数据、类型、类)均为 null,尽管稍后可以通过显式调用对其进行修改。这提供了一种方便的方法来创建旨在执行硬编码类名的意图,而不是依赖系统为您找到合适的类;有关此影响的更多信息,请参阅 setComponent(ComponentName)。
您没有按照上面的文档所述显式设置数据参数,而是尝试将 Extra 添加到失败的空数据对象。
相反,我会将您的课程更改为以下内容:
public class SearchActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
btnSend.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
String videoUrl = "http://video-url.com";
Intent data = new Intent();
data.putExtra("VIDEO_URL", videoUrl);
setResult(RESULT_OK, data);
finish();
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
这将初始化您的 Intent 并允许您向其中添加额外数据(这也是发送回数据的正常方式,通常不需要发送回与特定 Intent 相关的结果。
归档时间: |
|
查看次数: |
3152 次 |
最近记录: |