如何将一些数据转移到另一个数据Fragment同样extras用于intents?
在我开始之前,我已经看过如下问题:
以及Android文档:
http://developer.android.com/training/basics/fragments/communicating.html
以及这篇文章:
http://manishkpr.webheavens.com/android-passing-data-between-fragments/
虽然上面提到的所有情况都与我的相似,但并不完全相同.我在这里遵循了一个很好的教程(我的部分代码基于这篇文章):
http://www.androidhive.info/2013/10/android-tab-layout-with-swipeable-views-1/
我有以下文件:
RegisterActivity.java
NonSwipeableViewPager.java
ScreenSliderAdapter.java
RegisterOneFragment.java
RegisterTwoFragment.java
以下布局:
activity_register.xml
fragment_register_one.xml
fragment_register_two.xml
我想要实现的是将Serializable对象从RegisterFragmentOne传递给RegisterFragmentTwo.
到目前为止,这就是我所做的(省略了一些代码):
RegisterActivity.java
public class RegisterActivity extends FragmentActivity
implements RegisterOneFragment.OnEmailRegisteredListener{
public static NonSwipeableViewPager viewPager;
private ScreenSliderAdapter mAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
// Initilization
mAdapter = new ScreenSliderAdapter(getSupportFragmentManager());
viewPager = (NonSwipeableViewPager) findViewById(R.id.pager);
viewPager.setAdapter(mAdapter);
}
public void onEmailRegistered(int position, Registration regData){
Bundle args = new Bundle();
args.putSerializable("regData", regData);
viewPager.setCurrentItem(position, true);
}
}
Run Code Online (Sandbox Code Playgroud)
ScreenSliderAdapter.java
public class ScreenSliderAdapter extends FragmentPagerAdapter{
public …Run Code Online (Sandbox Code Playgroud) 我正在一个项目中工作,该项目包含许多片段的活动.现在我需要在这些片段之间共享一些数据(整数,字符串,arraylist).
我第一次使用静态字段,但我认为这是一个糟糕的方式然后我找到了这个解决方案.
但在我的情况下,没有按钮可以点击我只需要在片段之间导航是否有任何简单的方法来在片段之间共享数据
我想将用户ID从主Activity转移到片段.
所以在主要活动中,我做:
Fragment fragment = new Fragment();
final Bundle bundle = new Bundle();
bundle.putString("id_User", id);
Log.i("BUNDLE", bundle.toString());
fragment.setArguments(bundle);
Run Code Online (Sandbox Code Playgroud)
在日志中我可以看到
BUNDLE : Bundle[{id_User=1}]
Run Code Online (Sandbox Code Playgroud)
在片段中,我测试它 onCreate
Bundle arguments = getArguments();
if (arguments != null)
{
Log.i("BUNDLE != null","NO NULL");
} else {
Log.i("BUNDLE == null","NULL");
}
Run Code Online (Sandbox Code Playgroud)
我有
BUNDLE == null: NULL
Run Code Online (Sandbox Code Playgroud)
所以转移是成功的,但我怎样才能收到片段中的数据呢?
我的程序包含一个MainActivity和两个片段活动.我需要一个片段从用户获取String值并将其传递给第二个片段.
我试图围绕如何做到这一点.由于我熟悉意图,我在另一篇文章中找到了这个答案,并决定尝试一下.一切都看起来很好,直到我进入第4步,当我尝试i = getIntent();在我的第二个片段中使用Intent 时,Studio不会让我使用它并说"getIntent(java.lang.String) is deprecated".
这对我来说没有意义,因为我已经getIntent()在其他程序中使用了没有问题,而且它让我在我MainActivity(在另一篇文章中的第2步)中使用它而不会尖叫我.
我知道这可以在不使用意图的情况下完成,但我无法弄明白,也无法找到任何真正完整的教程.所以我想我的问题是:
我是安卓新手。我正在尝试按照这些视频链接中的教程进行操作。我知道这里有很多教程和我的相同问题,但我想知道当我单击提交按钮时我的应用程序停止的确切原因。抱歉,我还不熟悉它们在 android studio 中的功能以及系统的工作原理。我尝试创建 2 个片段,顶部和底部片段。在顶部片段中有一个提交表单。当我点击提交按钮时。该值将显示到底部片段。这就像将值传递给另一个片段。我创建了一个片段类名 TopSectionFragment
package com.example.aldrin.fragmenttutorial;
import android.content.Context;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.app.Activity;
import android.widget.Button;
import android.widget.EditText;
public class TopSectionFragment extends Fragment{
@Nullable
private static EditText topTextInput;
private static EditText bottomTextInput;
TopSectionListener activityCommander;
public interface TopSectionListener{
public void createMem(String top, String bottom);
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
Activity activity = context instanceof Activity ? (Activity) context : null;
try{
activityCommander = …Run Code Online (Sandbox Code Playgroud) 我有一个问题想询问有关活动中片段之间的数据传递的问题。我不知道该怎么做。有人可以帮忙吗?这是我的代码。
ShareFragment.java
package com.example.user8.myapplication;
import android.app.AlertDialog;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.DialogFragment;
import android.support.v4.app.Fragment;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import java.text.DateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
/**
* A simple {@link Fragment} subclass.
*/
public class ShareFragment extends Fragment implements AdapterView.OnItemSelectedListener{
private …Run Code Online (Sandbox Code Playgroud) 我对 android Studio 比较陌生,所以我只是问如何发送一个变量,比如说;
val Name = editName.text.toString() 从一个片段到另一个片段,以便您可以在第二个片段中使用它?我没有这个项目,这只是我的一个问题。