2014-02-15 52 views
-1

我想要做的就是将一个'扩展活动'的类中获得的信息发送到'扩展片段'类这个'扩展片段'是'PagerAdapter'的一部分我最初的想法是将信息通过意图传递给'扩展片段活动'的类,然后使用'getActivity()将信息传递给适当的片段“ .getIntent.getExtras()',但这似乎不起作用,因为信息必须在textView中显示。从'扩展活动'的类传递数据到'扩展片段'的类

我的类显示如下..

ObtainUserInformation.java

public class ObtainUserInformation extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.obtain_user_information); 
} 

public void submitInformation(View view){ 
    EditText maintenanceTxt = (EditText)findViewById(R.id.obUserInfo_maintenence); 
    EditText grantTxt = (EditText)findViewById(R.id.obUserInfo_grant); 
    EditText bursaryTxt = (EditText)findViewById(R.id.obUserInfo_bursary); 
    EditText barclaysTxt = (EditText)findViewById(R.id.obUserInfo_barclays); 
    EditText natwestTxt = (EditText)findViewById(R.id.obUserInfo_natwest); 
    EditText hsbcTxt = (EditText)findViewById(R.id.obUserInfo_hsbc); 
    EditText walletTxt = (EditText)findViewById(R.id.obUserInfo_wallet); 

    String maintenance = maintenanceTxt.getText().toString(); 
    String grant = grantTxt.getText().toString(); 
    String bursary = bursaryTxt.getText().toString(); 
    String barclays = barclaysTxt.getText().toString(); 
    String natwest = natwestTxt.getText().toString(); 
    String hsbc = hsbcTxt.getText().toString(); 
    String wallet = walletTxt.getText().toString(); 

    if(maintenance.isEmpty()|| grant.isEmpty() || bursary.isEmpty() || barclays.isEmpty() || natwest.isEmpty() 
      || hsbc.isEmpty() || wallet.isEmpty()){ 

     AlertDialog.Builder builder = new AlertDialog.Builder(this); 
     builder.setTitle("Empty textbox!"); 
     builder.setMessage("Please enter 0.00 for any empty textboxes"); builder.setPositiveButton("OK", null); 
     @SuppressWarnings("unused") 
     AlertDialog dialog = builder.show(); 
    } 
    else{ 
     float convMaintenance = Float.valueOf(maintenance); 
     float convGrant = Float.valueOf(grant); 
     float convBursary = Float.valueOf(bursary); 
     float convBarclays = Float.valueOf(barclays); 
     float convNatwest = Float.valueOf(natwest); 
     float convHsbc = Float.valueOf(hsbc); 
     float convWallet = Float.valueOf(wallet); 

     Intent intent = new Intent(ObtainUserInformation.this, MainMenu.class); 
     intent.getFloatExtra("maintenance", convMaintenance); 
     intent.getFloatExtra("grant", convGrant); 
     intent.getFloatExtra("bursary", convBursary); 
     intent.getFloatExtra("barclays", convBarclays); 
     intent.getFloatExtra("natwest", convNatwest); 
     intent.getFloatExtra("hsbc", convHsbc); 
     intent.getFloatExtra("wallet", convWallet); 
     Toast.makeText(ObtainUserInformation.this, "Financial information successfully saved!", Toast.LENGTH_LONG).show(); 
     startActivity(intent); 
     finish(); 
    } 
} 

}

这个类的做法是,抓住用户的输入上一个EditText,把它们放到变量,并通过意图发送这些变量。

MainMenu.java

public class MainMenu extends FragmentActivity{ 

DBAdapter db = new DBAdapter(this); //Initiate DB class methods 
SectionsPagerAdapter mSectionsPagerAdapter; 
ViewPager mViewPager; 

//OnCreate 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main_menu); 
    mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager()); 
    mViewPager = (ViewPager) findViewById(R.id.pager); 
    mViewPager.setAdapter(mSectionsPagerAdapter); 
} 

**UNNCESSARY CODE OMMITED** 

public void getUserInformation() { 
    float maintenance = getIntent().getExtras().getFloat("maintenance"); 
    float grant = getIntent().getExtras().getFloat("grant"); 
    float bursary = getIntent().getExtras().getFloat("bursary"); 
    float barclays = getIntent().getExtras().getFloat("barclays"); 
    float natwest = getIntent().getExtras().getFloat("natwest"); 
    float hsbc = getIntent().getExtras().getFloat("hsbc"); 
    float wallet = getIntent().getExtras().getFloat("wallet"); 
    EditText maintenanceTxt = (EditText)findViewById(R.id.fragment3_maintenance); 
    EditText grantTxt = (EditText)findViewById(R.id.fragment3_grant); 
    EditText bursaryTxt = (EditText)findViewById(R.id.fragment3_bursary); 
    EditText barclaysTxt = (EditText)findViewById(R.id.fragment3_barclays); 
    EditText natwestTxt = (EditText)findViewById(R.id.fragment3_natwest); 
    EditText hsbcTxt = (EditText)findViewById(R.id.fragment3_hsbc); 
    EditText walletTxt = (EditText)findViewById(R.id.fragment3_wallet); 
    maintenanceTxt.setTextSize(maintenance); 
    grantTxt.setTextSize(grant); 
    bursaryTxt.setTextSize(bursary); 
    barclaysTxt.setTextSize(barclays); 
    natwestTxt.setTextSize(natwest); 
    hsbcTxt.setTextSize(hsbc); 
    walletTxt.setTextSize(wallet); 
} 

MORE UNNECESSARY CODE OMITTED 

这是什么类包含一个方法“getUserInformation”,抓住意图,找到的EditText ID和设置的意图变量这个文本字段。

Fragment3

public class Fragment3 extends Fragment { 


@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View root = inflater.inflate(R.layout.fragment3, container, false); 

    //Set date to TextView 
    long date = System.currentTimeMillis(); 
    SimpleDateFormat sdf = new SimpleDateFormat("MMM d, yyyy"); 
    String dateString = sdf.format(date); 
    TextView t = (TextView) root.findViewById(R.id.textView_date3); 
    t.setText(dateString); 
    return root; 
} 

这个类是我想显示在EditText上框的变量,但在努力寻找一个合适的方法来完成这个任务。

与片段,而不是普通的活动课,工作时它变得更加困难......

只是一个休息的什么,我希望发生的下降是:1。 )用户输入信息到1次活动 2 。)这些信息显示在页面的一部分中。Adaptor

任何帮助将不胜感激!

回答

2

如果您想在创建碎片时传递数据,请使用此类Bundle。

Bundle args = new Bundle(); 
args.putInt("yourStringName", yourSting); 
fragment.setArguments(args); 

如果您想要联系片段中的封闭活动。您可以使用getActivity方法获取Activity实例并调用您想要调用的函数。在你的情况下,即使你可以访问与FragmentActivity相关联的Intent,并从中访问额外的值。

public void putFloat (String key, float value)

+0

对我来说,我试图在传递一个浮动,这将仍然工作,而不是使用'args.putInt(“yourStringName”,yourString)以同样的方式;'? – user3197786

+0

查看编辑答案。 – Triode

+0

也可以在我的'Fragment3'类的'onCreateView'下使用'getActivity',还是我必须在使用'getActivity'功能的'Fragment3'中创建一个单独的方法? – user3197786