2014-04-22 38 views
12

我有一個ImageView。我想從一個片段移動到另一個片段上的ImageView的點擊,就像我們以同樣的方式可以用如何在Android中單擊ImageView時從一個片段移動到另一個片段?

Intent i=new Intent(MainActivity.this,SecondActivity.class); 
startActivity(i); 

我怎樣才能做到這從一個活動移動到另一個?任何人都可以一步一步向我解釋嗎?

我的代碼如下:

mycontacts.class

public class mycontacts extends Fragment { 
    public mycontacts() { 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
     final View v = super.getView(position, convertView, parent); 
     ImageView purple=(ImageView)v.findViewById(R.id.imageView1); 
     purple.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
      // TODO Auto-generated method stub 
      //how to go to tasks fragment from here??? 
      } 
     }); 
     return view; 

    } 
} 

tasks.class

public class tasks extends Fragment { 
    public tasks() { 
    } 

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

     View view = inflater.inflate(R.layout.fragment_layout_one, container, 
      false); 

     return view; 
    } 
} 
+0

我想你是新的碎片..?我是否正確..? – GvSharma

回答

29
purple.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     Fragment fragment = new tasks(); 
     FragmentManager fragmentManager = getActivity().getSupportFragmentManager(); 
     FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
     fragmentTransaction.replace(R.id.content_frame, fragment); 
     fragmentTransaction.addToBackStack(null); 
     fragmentTransaction.commit(); 
    } 
}); 

你寫上面的代碼...有我們正在取代R.id.conten t_frame與我們的片段。 希望這可以幫助你

+0

Fragment fragment = new tasks();我收到錯誤'不能將片段轉換爲任務'。該怎麼辦? – user3256145

+2

任務擴展片段...所以任務只是片段的子類,並確保您的導入語句 import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; 如果仍有錯誤,則發佈您的日誌消息 – GvSharma

+0

任務片段的佈局ID爲'r.id.task'。而我目前的片段的佈局ID爲'r.id.contact'。所以我應該寫什麼'r.id.content_frame'的地方? – user3256145

1

你可以通過使用FragmentManager事務移動到另一個片段。片段不能稱爲活動。存在關於活動存在的碎片。

您可以通過編寫下面的代碼中調用另一個片段:

 FragmentTransaction t = this.getFragmentManager().beginTransaction(); 
     Fragment mFrag = new MyFragment(); 
     t.replace(R.id.content_frame, mFrag); 
     t.commit(); 

這裏「R.id.content_frame」是要更換片段佈局的ID。

您還可以添加替換的其他片段。

+0

Fragment fragment = new tasks();我收到錯誤無法將片段轉換爲任務。該怎麼辦? - – user3256145

+0

請檢查導入情況,請使用supportedFragment或Fragments –

+0

沒有人...此錯誤不應該發生.. 您發佈日誌消息一次... – GvSharma

1

您onClickListener.onClick裏面,把

getFragmentManager().beginTransaction().replace(R.id.container, new tasks()).commit(); 

在另一個世界裏,你mycontacts.class

public class mycontacts extends Fragment { 
public mycontacts() { 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
    Bundle savedInstanceState) { 
    final View v = super.getView(position, convertView, parent); 
    ImageView purple=(ImageView)v.findViewById(R.id.imageView1); 
    purple.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
     // TODO Auto-generated method stub 
      getFragmentManager() 
        .beginTransaction() 
        .replace(R.id.container, new tasks()) 
        .commit(); 
     } 
    }); 
    return view; 

} 
} 

現在,記得R.id.container是容器(FrameLayout裏或其他佈局)的活動那叫電影片段

相關問題