2014-10-20 6 views
0

나는 모든 검색을 다 써 버렸다. 본질적으로 내가 달성하고자하는 것은 내 FragmentActivity에서 ListFragment로 문자열을 전달하는 것이다. 다음은 내 코드입니다 :FragmentActivity에서 ListFragment로 문자열 전달하기

MyActivity.java

package com.application.smst.smstapp; 

import android.app.ActionBar; 
import android.app.Activity; 
import android.app.FragmentManager; 
import android.app.FragmentTransaction; 
import android.app.ProgressDialog; 
import android.graphics.Color; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.support.v4.app.FragmentActivity; 
import android.support.v4.view.ViewPager; 
import android.text.util.Linkify; 
import android.util.Log; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.widget.ImageView; 
import android.widget.ScrollView; 
import android.widget.TextView; 
import android.widget.Toast; 
import org.apache.http.HttpEntity; 
import org.apache.http.HttpResponse; 
import org.apache.http.NameValuePair; 
import org.apache.http.ParseException; 
import org.apache.http.client.ClientProtocolException; 
import org.apache.http.client.HttpClient; 
import org.apache.http.client.entity.UrlEncodedFormEntity; 
import org.apache.http.client.methods.HttpPost; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.apache.http.message.BasicNameValuePair; 
import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 
import android.support.v4.widget.SwipeRefreshLayout; 
import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.text.SimpleDateFormat; 
import java.util.ArrayList; 
import java.util.Date; 

import com.application.smst.smstapp.adapter.TabsPagerAdapter; 




public class MyActivity extends FragmentActivity implements ActionBar.TabListener { 

private ViewPager viewPager; 
private ActionBar actionBar; 
// Tab titles 




@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_my); 
    // Initilization 

    String[] tabs = { "LOA", "OT", "My "+getIntent().getExtras().getString("result_mover") }; 
    //////////////////////////////////////////////////// 
    String message = getIntent().getExtras().getString("result_mover"); 
    Toast.makeText(getApplicationContext(), message, Toast.LENGTH_LONG).show(); 

    //////////////////////////////////////////////////// 
    viewPager = (ViewPager) findViewById(R.id.pager); 
    actionBar = getActionBar(); 
    TabsPagerAdapter mAdapter = new TabsPagerAdapter(getSupportFragmentManager()); 

    viewPager.setAdapter(mAdapter); 
    actionBar.setHomeButtonEnabled(false); 
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 

    // Adding Tabs 
    for (String tab_name : tabs) { 
     actionBar.addTab(actionBar.newTab().setText(tab_name) 
       .setTabListener(this)); 
    } 
    /** 
    * on swiping the viewpager make respective tab selected 
    * */ 
    viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { 

     @Override 
     public void onPageSelected(int position) { 
      // on changing the page 
      // make respected tab selected 
      actionBar.setSelectedNavigationItem(position); 
     } 

     @Override 
     public void onPageScrolled(int arg0, float arg1, int arg2) { 
     } 

     @Override 
     public void onPageScrollStateChanged(int arg0) { 
     } 
    }); 
} 

@Override 
public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) { 
} 

@Override 
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) { 
    // on tab selected 
    // show respected fragment view 
    viewPager.setCurrentItem(tab.getPosition()); 
} 

@Override 
public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) { 
} 


} 

내가 전달하는 데 노력하고있어 변수는 데이터가 성공적으로 다른 활동에서 전달 된 메시지 문자열

String message = getIntent().getExtras().getString("result_mover"); 

입니다. 하지만 지금은 위의 조각 활동에 포함 된 세 개의 탭 (조각) 중 하나 인 내 목록 조각으로 가져와야합니다. 이것에 어떤 도움을 크게 주시면 감사하겠습니다

package com.application.smst.smstapp; 


import java.util.ArrayList; 
import java.util.List; 

import android.content.Intent; 
import android.os.Bundle; 
import android.support.v4.app.ListFragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.TextView; 
import android.widget.Toast; 

/** 
* Created by Admin on 10/5/2014. 
*/ 
public class schfragment extends ListFragment { 
String[] menuweekday; 
String[] menudate; 
String[] menustart; 
String[] menuend; 
CustomAdapter adapter; 
private List<RowItem> rowItems; 

@Override 
public View onCreateView(LayoutInflater inflater,ViewGroup container, Bundle savedInstanceState){ 


    //////////////////////////////////////// 
    return inflater.inflate(R.layout.fragment_sch, container, false); 



} 
@Override 
public void onActivityCreated(Bundle savedInstanceState){ 
super.onActivityCreated(savedInstanceState); 
menuweekday = getResources().getStringArray(R.array.weekdays); 
menudate = getResources().getStringArray(R.array.dates); 
menustart = getResources().getStringArray(R.array.starts); 
menuend = getResources().getStringArray(R.array.ends); 

rowItems = new ArrayList<RowItem>(); 

for (int i = 0; i< menuweekday.length;i++){ 
    RowItem items = new RowItem(menuweekday[i],menudate[i],menustart[i],menuend[i]); 
    rowItems.add(items); 
} 
adapter = new CustomAdapter(getActivity(),rowItems); 
    setListAdapter(adapter); 

} 

} 

schfragment.java : 아래 listfragment 코드입니다.

번들을 사용하여 시도한 결과 NPE가 발생했습니다. 코드를 정확히 어디에 넣을 지 모릅니다.

감사합니다. 내 tabspager 어댑터를 게시해야하는지 알려주십시오.

답변

0

번들을 이미 시도했기 때문에 도움이 될지 모르겠지만 작동 코드는 게시 할 예정입니다.

private static final String KEY_RESULT = "result"; 

public static MyFragment newInstance(String result) { 
    MyFragment myFragment = new MyFragment(); 

    Bundle bundle = new Bundle(); 
    bundle.putString(KEY_RESULT, result); 
    myFragment.setArguments(bundle); 

    return myFragment; 
} 

그리고 당신은 당신이 조각에 전달 된 문자열을 필요로 할 때,이 코드를 사용합니다 :

String result = this.getArguments().getString(KEY_RESULT, ""); 

마지막을,이 I가 사용하는 코드입니다 이 나의 조각에 사용되는 일부 코드는 조각을 만듭니다. 내 활동에서이 작업을 수행하지만 어댑터에서 수행 할 수도 있습니다. 당신은 문자열 '결과'가있는 한.

List<Fragment> fragments = new ArrayList<Fragment>(); 
fragments.add(MyFragment.newInstance(result)); 
관련 문제