I need help creating an Android app which uses Fragments and
I need help creating an Android app which uses Fragments and Transaction Manager such that it will be able to pass data from one fragment to another. I have created the xmls so that Main Activity just displays FragmentTwo which has two ImageButtons that one clicks and based on what he clicks will display a message on FragmentOne. Here are the files so far:
activity_main.xml###################################################################
FragmentTwo.java###################################################################
fragment_two.xml###########################################################################
FragmentOne.java#############################################################
fragment_one.xml ######################################################################################
AndroidManifest.xml##################################################################
###############################################################
Solution
//main.xml <?xml version=\"1.0\" encoding=\"utf-8\"?>
<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"
xmlns:tools=\"http://schemas.android.com/tools\"
android:layout_width=\"match_parent\"
android:layout_height=\"match_parent\"
android:orientation=\"vertical\" >
<Button
android:id=\"@+id/button1\"
android:layout_width=\"fill_parent\"
android:layout_height=\"wrap_content\"
android:text=\"@string/btn_label1\"/>
<Button
android:id=\"@+id/button2\"
android:layout_width=\"fill_parent\"
android:layout_height=\"wrap_content\"
android:text=\"@string/btn_label2\"/>
<fragment
android:layout_width=\"match_parent\"
android:layout_height=\"match_parent\"
class=\"com.concretepage.android.FragmentOne\"
android:id=\"@+id/output\"/>
</LinearLayout>
//fragment_one.xml <?xml version=\"1.0\" encoding=\"utf-8\"?>
<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"
android:orientation=\"vertical\"
android:layout_width=\"match_parent\"
android:gravity=\"center\"
android:background=\"#FF0000\"
android:layout_height=\"match_parent\">
<TextView
android:layout_width=\"wrap_content\"
android:layout_height=\"wrap_content\"
android:layout_gravity=\"center\"
android:textColor=\"#b0b0ff\"
android:textSize=\"20sp\"
android:id=\"@+id/msg1\"/>
</LinearLayout>
//fragment_two.xml <?xml version=\"1.0\" encoding=\"utf-8\"?>
<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"
android:orientation=\"vertical\"
android:layout_width=\"match_parent\"
android:gravity=\"center\"
android:background=\"#b0b0ff\"
android:layout_height=\"match_parent\">
<TextView
android:layout_width=\"wrap_content\"
android:layout_height=\"wrap_content\"
android:layout_gravity=\"center\"
android:textColor=\"#FF0000\"
android:textSize=\"20sp\"
android:id=\"@+id/msg2\"/>
</LinearLayout>
//strings.xml <?xml version=\"1.0\" encoding=\"utf-8\"?>
<resources>
<string name=\"app_name\">Concrete Page</string>
<string name=\"btn_label1\"> Fragment One </string>
<string name=\"btn_label2\"> Fragment Two </string>
</resources>
//Activity & Fragment Implementations //FragmentOne.java
package com.concretepage.android;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.cp.android.R;
public class FragmentOne extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater,ViewGroup viewGroup, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_one, viewGroup, false);
TextView output= (TextView)view.findViewById(R.id.msg1);
output.setText(\"Fragment One\");
return view;
}
}
//FragmentTwo.java
package com.concretepage.android;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.cp.android.R;
public class FragmentTwo extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater,ViewGroup viewGroup, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_two, viewGroup, false);
TextView output= (TextView)view.findViewById(R.id.msg2);
output.setText(\"Fragment Two\");
return view;
}
}
//MainActivity.java
package com.concretepage.android;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import com.cp.android.R;
public class MainActivity extends FragmentActivity{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
OnClickListener listener = new OnClickListener() {
public void onClick(View view) {
Fragment fragment = null;
if(view == findViewById(R.id.button1)){
fragment = new FragmentOne();
} else {
fragment = new FragmentTwo();
}
FragmentManager manager = getSupportFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
transaction.replace(R.id.output, fragment);
transaction.commit();
}
};
Button btn1 = (Button)findViewById(R.id.button1);
btn1.setOnClickListener(listener);
Button btn2 = (Button)findViewById(R.id.button2);
btn2.setOnClickListener(listener);
}
}
// AndroidManifest.xml <?xml version=\"1.0\" encoding=\"utf-8\"?>
<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"
package=\"com.cp.android\"
android:versionCode=\"1\"
android:versionName=\"1.0\" >
<uses-sdk android:minSdkVersion=\"11\" />
<application
android:allowBackup =\"false\"
android:icon=\"@drawable/ic_launcher\"
android:label=\"@string/app_name\" >
<activity
android:name=\"com.concretepage.android.MainActivity\"
android:label=\"@string/app_name\" >
<intent-filter>
<action android:name=\"android.intent.action.MAIN\" />
<category android:name=\"android.intent.category.LAUNCHER\" />
</intent-filter>
</activity>
</application>
</manifest>
Output :


