2015-10-07 50 views
0

在片段當我點擊一個圖像查看一個活動打開獲取編號並返回結果到片段,並顯示在編輯文本,它是在片段。得到結果表單活動片段

myfragment:

public class Fragmenttellsms extends Fragment implements View.OnClickListener { 

    ViewGroup v; 
    ImageView iv; 
    EditText etnumber; 
    Button btnTellAFriend; 
    public static String num; 
    public static String NUM_KEY = "CUSTOM_TEXT"; 
    Intent intent; 
    String[] parts; 
    private String num2; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     v = (ViewGroup) inflater.inflate(R.layout.tabfragmenttellsms, 
       container, false); 
    // set(); 
     iv = (ImageView) v.findViewById(R.id.ivTellAFriend); 
     etnumber = (EditText) v.findViewById(R.id.etTellAFriend); 
     btnTellAFriend = (Button) v.findViewById(R.id.btnTellAFriend); 
     num ="";  

      iv.setOnClickListener(new OnClickListener() { 

       @Override 
       public void onClick(View v) { 
        if (etnumber.length()>0) { 
         num = etnumber.getText().toString()+","; 
        } 
        else { 
         num = etnumber.getText().toString();   
        } 
        intent = new Intent(getActivity(), ContactsBackup.class); 
        intent.putExtra("oldValue", num); 
        startActivityForResult(intent,1010);; 
       } 
      }); 
     // etnumber.setText("2563"); 
     return v; 
    } 

    @Override 
    public void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     // Don't forget to check requestCode before continuing your job 
     if (requestCode == 1010 | resultCode == 1010) { 
      // Do your job 
     num2 = data.getExtras().getString("valueId"); 
      etnumber.setText(num2); 
     } 
    } 

    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 

    } 

} 

Myactivity:

public class ContactsBackup extends Activity { 

    Context context = ContactsBackup.this; 
    ListView list; 
    ArrayList<String> contactsList,contactsList2; 
    protected void onCreate(Bundle savedInstanceState) { 

     try { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.contactsbackup); 
      overridePendingTransition(R.anim.trans_left_in, 
        R.anim.trans_left_out); 

      set(); 

      lca = new LoadContactsAyscn(); 
      lca.execute(); 

      list.setOnItemClickListener(new OnItemClickListener() { 

       @Override 
       public void onItemClick(AdapterView<?> parent, View view, 
         int position, long id) { 
        String s; 
        oldvalue = getIntent().getExtras().getString("oldValue"); 
        s = oldvalue + contactsList2.get(position).toString(); 
        s = s.replace("-", ""); 
        s = s.replace(" ", ""); 
       // Toast.makeText(context, s, Toast.LENGTH_LONG).show();   

        Intent intent = new Intent(); 
        intent.putExtra("valueId", s); 
        setResult(1010, intent); 
        finish(); 
       } 
      }); 
} 

但編輯文本總是空的。 我看到這個問題,但爲我的劑量注意工作。

Send data from activity to fragment in android

How to pass data from activity to fragment

+0

您的活動保存片段需要onActivityResult和回報超有 –

+0

@MarkoNiciforovic你能不能給我一個例子 –

+0

另一種方法是在您的活動中使用回調。請參閱Android中的接口/回調。 –

回答

0

如果你的片段是在父片段,其持有的片段將調用父片段的onActivityResult這是直接由活動舉辦的活動。

你應該添加你的片段和活動保存片段代碼。

這裏是關於活動和片段一個簡單的例子:

//Activity 
public void onCreate(Bundle saved){ 
    // ... init code and view 

    mFragment = new Fragmenttellsms(); 
    FragmentTransaction ft = getFragmentManager().beginTransaction(); 
    ft.add(frame.getId(), mFragment).commit(); 
} 

// onActivityResult, after the new activity which started from startActivityForResult finish, this method will be called. 
public void onActivityResult(int requestCode, int resultCode, Intent data){ 
    //here you can process the result returned from the finished activity 
} 

片段我也命名爲您調用startActivityForResult Fragmenttellsms。

//Fragmenttellsms 
... 

public void onActivityResult(int requestCode, int resultCode, Intent data){ 
    //here you can process the result returned from the finished activity, 
    //but this method will only be callback when the fragment is the child of Activity. 
    //if this Fragment is a child of another fragment which is direct child of Activity, 
    //this method will not callback. 
} 

例如,您Fragmenttellsms加入這樣的代碼,該onActivityResult不會回調:

// ParentFragment 
getChildFragmentManager().beginTransaction().add(new Fragmenttellsms()).commit(); 
// in this condition, you call Fragmenttellsms object's startActivityForResult, the Fragmenttellsms's onActivityResult will not callback. 

我不知道你的活動和片段的細節。希望這個解釋可以幫助你。

+0

我應該添加我的片段結構和活動的onActivityResult。 –

+0

呃,我的意思是你可以提供你的活動代碼,什麼是Fragmenttellsms父項。抱歉我的描述。 – xxxzhi

+0

你需要什麼幫助我,並給出一個示例代碼 –

0

的onActivityResult方法,將您的片段父活動被觸發,即層次:

//this is in your parent activity of your fragment 
@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == YOUR_REQUEST_CODE) { 
     yourFragment.onActivityResult(...); 
    } 
} 
+0

對圖像視圖點擊我把這段代碼: intent = new Intent(getActivity(),ContactsBackup.class); intent.putExtra(「oldValue」,num); startActivityForResult(intent,1010); 我的活動我把這個: Intent intent = new Intent(); intent.putExtra(「valueId」,s); \t setResult(1010,intent); \t finish(); 和活動結果: if(requestCode == 1010){ \t num2 = data.getExtras()。getString(「valueId」); etnumber.setText(num2); } } 我應該使用您的代碼的人 –