我在学习如何在Android中使用片段。我创建了单独的类和布局。我无法理解我应该如何链接它们。我的主班里究竟发生了什么?有人能够以非常基本的方式证明如何使用碎片?如何正确使用片段
如何正确使用片段
回答
在你的主类中,你产生了一个或多个片段......当你制作每个片段时,它与Activity非常相似,但有自己的生命圈(Google它)。
这里的一对片段例如:你做
public class DummySectionFragment3 extends Fragment
{
public DummySectionFragment3() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
{
View rootView = inflater.inflate(R.layout.exercise_layout,
container, false);
return rootView;
}
}
在OnCreateView()方法,你平时用的活动做。 我的主类包含在片段之间切换的SectionsPagerAdapter(类似于API示例中的寻呼机) 创建2或3个片段,并尝试它... 我没有在它上面找到任何好的示例,所以我只是尝试了上述。
我用这个链接即可开始使用 http://www.techotopia.com/index.php/Using_Fragments_in_Android_-_A_Worked_Example
这家伙使用2种不同的听众,并采取在第一个片段中的用户输入。第二个片段输出数据!
Goodluck!
http://www.c-sharpcorner.com/UploadFile/2fd686/fragments/
这里有标签和碎片一个很好的链接。 你也可以在你的xml中定义你的片段。
基本是这样的:
创建一个Activity和2 Fragments。
如果在FragmantA中发生了什么,应该在fragmentB中改变一些东西。所以活动将片段A和B链接在一起。你需要什么:一个接口。
因此,创建一个采用正确属性的方法的接口(不要忘记数据类型)。现在您可以在您的活动中实施界面。
之后,您应该在onActivityCreated方法中初始化FragmentA中的接口。执行更改并将数据发送到Activity中的interfacemethod。使用FragmentManager创建对FragmentB的引用。现在您可以将数据/更改发送到FragmentB。
我希望你明白这一点;)。欢呼声
请首先阅读this首先,我想我有很基础。下面是一个例子:
MainActivity:
public class MainActivity extends Activity implements OnClickListener{
private final String TAG = "MainActivity";
private int btn00Clicks = 0;
private int btn01Clicks = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mainactivity);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Fragment mSelectedFragment = null;
switch (v.getId()) {
case R.id.btn00:
Bundle mBundle00 = new Bundle();
String clicks00 = Integer.toString(btn00Clicks);
mBundle00.putString("btn00_clicks", clicks00);
mSelectedFragment = new Fragment00();
mSelectedFragment.setArguments(mBundle00);
if (mSelectedFragment != null) {
FragmentManager mFragmentManager = getFragmentManager();
mFragmentManager.beginTransaction()
.replace(R.id.fragment00ID, mSelectedFragment).commit();
}
btn00Clicks++;
break;
case R.id.btn01:
Bundle mBundle01 = new Bundle();
String clicks01 = Integer.toString(btn01Clicks);
mBundle01.putString("btn01_clicks", clicks01);
mSelectedFragment = new Fragment01();
mSelectedFragment.setArguments(mBundle01);
if (mSelectedFragment != null) {
FragmentManager mFragmentManager = getFragmentManager();
mFragmentManager.beginTransaction()
.replace(R.id.fragment00ID, mSelectedFragment).commit();
}
btn01Clicks++;
}
}
}
Fragment00.java:
public class Fragment00 extends Fragment {
private final String TAG = "Fragment00";
TextView mTv;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
View view = inflater.inflate(R.layout.fragment00, null);
return view;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onActivityCreated(savedInstanceState);
mTv = (TextView) getView().findViewById(R.id.fragment00Tv00);
if (getArguments() != null) {
String str = getArguments().getString("btn00_clicks").toString();
mTv.setText("the Button was clicked "+str+ " time(s)");
Log.i(TAG, "onActivityCreated(): "+str);
}else {
Log.i(TAG, "onActivityCreated(): getArguments() is NULL");
}
}
@Override
public void onAttach(Activity activity) {
// TODO Auto-generated method stub
super.onAttach(activity);
}
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
}
}
Fragment01。的java:
public class Fragment01 extends Fragment {
private static final String TAG = "Fragment01";
TextView mTv;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
return inflater.inflate(R.layout.fragment01, null);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onActivityCreated(savedInstanceState);
mTv = (TextView) getView().findViewById(R.id.fragment01Tv00);
if (getArguments() != null) {
String str = getArguments().getString("btn01_clicks").toString();
mTv.setText("the Button was clicked "+str+ " time(s)");
Log.i(TAG, "onActivityCreated(): "+str);
}else {
Log.i(TAG, "onActivityCreated(): getArguments() is NULL");
}
}
}
MainActivity_layout:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
tools:context="com.example.fragments01.MainActivity"
tools:ignore="MergeRootFrame">
<RelativeLayout
android:id="@+id/mainRelativeLayout00"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="top|center_vertical">
<Button
android:id="@+id/btn00"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="fragment_one"
android:onClick="onClick"></Button>
<Button
android:id="@+id/btn01"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/btn00"
android:text="Fragment two"
android:onClick="onClick"></Button>
<fragment
android:name="com.example.fragments01.Fragment00"
android:id="@+id/fragment00ID"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_below="@+id/btn01">
</fragment>
</RelativeLayout>
Fragment00_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
tools:context="com.example.fragments01.Fragment00"
tools:ignore="MergeRootFrame"
android:background="#00ffff">
<RelativeLayout
android:id="@+id/fragment00RelativeLayout00"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="top|center_vertical">
<TextView
android:id="@+id/fragment00Tv00"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
</TextView>
</RelativeLayout>
Fragment01_layout.xml:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
tools:context="com.example.fragments01.Fragment01"
tools:ignore="MergeRootFrame"
android:background="#ffff00">
<RelativeLayout
android:id="@+id/fragment01RelativeLayout00"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="top|center_vertical">
<TextView
android:id="@+id/fragment01Tv00"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Fragment two">
</TextView>
<Button
android:id="@+id/fragment01Btn00"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Button of fragment two"
android:layout_below="@+id/fragment01Tv00">
</Button>
</RelativeLayout>
我做了不使用ViewPager
和所有的怪异的东西,只是Activity
和Fragment
这里Stack Overflow和相同的之间的联系的示例项目点击Code Review来展示它,点击任一链接查看该项目。
同什么LetsAmrIt发布,只是一个例子:
主要活动:
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.Comparator;
import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.content.Context;
import android.content.Intent;
import android.content.res.Configuration;
import android.graphics.PixelFormat;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.WindowManager;
import android.widget.AdapterView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
public class MainActivity extends Activity implements MyListFragment.MovieSelectedListener
{
Movie movie;
ListView movieList;
@SuppressWarnings("deprecation")
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
getWindow().setFormat(PixelFormat.RGBA_8888);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DITHER);
setContentView(R.layout.activity_main);
try
{
FileInputStream fis = openFileInput("movies");
if (fis != null)
{
ObjectInputStream in = new ObjectInputStream(fis);
movie = (Movie) in.readObject();
in.close();
Toast.makeText(this, "Movies loaded.", Toast.LENGTH_SHORT).show();
}
}
catch (Exception e)
{
Toast.makeText(this, "No movies to load.", Toast.LENGTH_SHORT).show();
}
if (movie == null)
{
movie = new Movie();
movie.addMovie("Harry Potter", "12 January", "Thriller", 4, "Some people", "Bad", "Someone", "Walmer Park");
}
loadFragments();
}
public void loadFragments()
{
if ((getResources().getConfiguration().screenLayout &Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_LARGE)
{
Log.d("Screen Size: ", "LARGE");
// obtain the fragment manager
FragmentManager fragmentManager = getFragmentManager();
// determine if the fragment has already been loaded (may have happened)
Fragment listfrag = fragmentManager.findFragmentById(R.id.fragment_container);
// place fragment into container if not already there
if (listfrag == null) {
// start a transaction that will handle the swapping in/out
FragmentTransaction fragmentTransaction = fragmentManager
.beginTransaction();
// multiple additions to the transaction can be done so that they
// changes will be done simultaneously
MyListFragment fragment1 = new MyListFragment();
fragmentTransaction.add(R.id.fragment_container, fragment1);
ViewFragment fragment2 = new ViewFragment();
fragmentTransaction.add(R.id.details_container, fragment2);
Bundle args = new Bundle();
args.putSerializable("Movie", movie);
fragment1.setArguments(args);
// commit the changes, i.e. do it!
fragmentTransaction.commit();
}
}
else if ((getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_NORMAL) {
Log.d("Screen Size: ", "NORMAL");
// obtain the fragment manager
FragmentManager fragmentManager = getFragmentManager();
// determine if the fragment has already been loaded (may have happened)
Fragment listfrag = fragmentManager.findFragmentById(R.id.fragment_container);
// place fragment into container if not already there
if (listfrag == null) {
// start a transaction that will handle the swapping in/out
FragmentTransaction fragmentTransaction = fragmentManager
.beginTransaction();
// multiple additions to the transaction can be done so that they
// changes will be done simultaneously
MyListFragment fragment = new MyListFragment();
fragmentTransaction.add(R.id.fragment_container, fragment);
Bundle args = new Bundle();
args.putSerializable("Movie", movie);
fragment.setArguments(args);
// commit the changes, i.e. do it!
fragmentTransaction.commit();
}
}
else if ((getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_SMALL) {
Log.d("Screen Size: ", "SMALL");
}
else if ((getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_XLARGE) {
Log.d("Screen Size: ", "XLARGE");
Log.d("Screen Size: ", "LARGE");
// obtain the fragment manager
FragmentManager fragmentManager = getFragmentManager();
// determine if the fragment has already been loaded (may have happened)
Fragment listfrag = fragmentManager.findFragmentById(R.id.fragment_container);
// place fragment into container if not already there
if (listfrag == null) {
// start a transaction that will handle the swapping in/out
FragmentTransaction fragmentTransaction = fragmentManager
.beginTransaction();
// multiple additions to the transaction can be done so that they
// changes will be done simultaneously
MyListFragment fragment1 = new MyListFragment();
fragmentTransaction.add(R.id.fragment_container, fragment1);
ViewFragment fragment2 = new ViewFragment();
fragmentTransaction.add(R.id.details_container, fragment2);
Bundle args = new Bundle();
args.putSerializable("Movie", movie);
fragment1.setArguments(args);
// commit the changes, i.e. do it!
fragmentTransaction.commit();
}
}
else {
Log.d("Screen Size: ","UNKNOWN_CATEGORY_SCREEN_SIZE");
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu items for use in the action bar
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main, menu);
return true;
}
public void pushFragment(Movie curMovie) {
// obtain the fragment manager
FragmentManager fragmentManager = getFragmentManager();
// start a transaction that will handle the swapping in/out
FragmentTransaction fragmentTransaction = fragmentManager
.beginTransaction();
// add new fragment, BUT remember previous one, so that BACK button
// returns to it
ViewFragment fragment = new ViewFragment();
fragmentTransaction.replace(R.id.fragment_container, fragment);
fragmentTransaction.addToBackStack("view");
Bundle args = new Bundle();
args.putSerializable("curMovie", curMovie);
fragment.setArguments(args);
// commit the changes, i.e. do it!
fragmentTransaction.commit();
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
MyListFragment fragment = (MyListFragment) getFragmentManager().findFragmentById(R.id.fragment_container);
switch(item.getItemId())
{
case R.id.action_about:
About();
return true;
case R.id.action_add:
addMovie();
return true;
case R.id.sort_Title:
fragment.sortTitle();
return true;
case R.id.sort_Date:
fragment.sortDateViewed();
return true;
case R.id.sort_Rating:
fragment.sortRating();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
if (requestCode == 1)
{
if (resultCode == RESULT_OK)
{
String title = data.getStringExtra("titleText");
String genre = data.getStringExtra("genreText");
String actors = data.getStringExtra("actorsText");
int rating = data.getIntExtra("ratingValue", 0);
String date = data.getStringExtra("dateWatched");
String watchedWith = data.getStringExtra("watchedWithText");
String watchedAt = data.getStringExtra("watchedAtText");
String comment = data.getStringExtra("commentText");
movie.addMovie(title, date, genre, rating, actors, comment, watchedWith, watchedAt);
write();
}
}
super.onActivityResult(requestCode, resultCode, data);
}
public void write()
{
try
{
FileOutputStream fos = openFileOutput("movies", Context.MODE_PRIVATE);
ObjectOutputStream out = new ObjectOutputStream(fos);
out.writeObject(movie);
fos.close();
Toast.makeText(this, "Movies saved.", Toast.LENGTH_SHORT).show();
}
catch (Exception e)
{
Toast.makeText(this, "Movies could not be saved.", Toast.LENGTH_SHORT).show();
}
}
public void addMovie()
{
Intent intentAdd = new Intent(MainActivity.this, AddMovie.class);
startActivityForResult(intentAdd, 1);
}
public void About()
{
Intent intentAbout = new Intent(this, About.class);
startActivity(intentAbout);
}
public void addDetails(Movie curMovie)
{
// obtain the fragment manager
FragmentManager fragmentManager = getFragmentManager();
// start a transaction that will handle the swapping in/out
FragmentTransaction fragmentTransaction = fragmentManager
.beginTransaction();
ViewFragment fragment = new ViewFragment();
// REPLACE the existing fragment with another one
fragmentTransaction.replace(R.id.details_container, fragment);
Bundle args = new Bundle();
args.putSerializable("curMovie", curMovie);
fragment.setArguments(args);
// commit the changes, i.e. do it!
fragmentTransaction.commit();
}
@Override
public void onMovieSelected(String movieName) {
// TODO Auto-generated method stub
if ((getResources().getConfiguration().screenLayout &Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_LARGE)
{
Log.d("Screen Size: ", "LARGE");
Movie current = movie.getMovie(movieName);
Context context = getApplicationContext();
CharSequence text = current.MovieTitle;
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
addDetails(current);
}
else if ((getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_NORMAL) {
Log.d("Screen Size: ", "NORMAL");
Movie current = movie.getMovie(movieName);
Context context = getApplicationContext();
CharSequence text = current.MovieTitle;
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
pushFragment(current);
}
else if ((getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_SMALL) {
Log.d("Screen Size: ", "SMALL");
}
else if ((getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_XLARGE) {
Log.d("Screen Size: ", "XLARGE");
}
else {
Log.d("Screen Size: ","UNKNOWN_CATEGORY_SCREEN_SIZE");
}
}
@Override
public void onDeleteSelected(String movie, MovieAdapter adapter) {
// TODO Auto-generated method stub
this.movie.deleteMovie(movie);
adapter.notifyDataSetChanged();
write();
}
}
电影适配器:
import java.util.List;
import android.content.Context;
import android.view.*;
import android.widget.ArrayAdapter;
import android.widget.RatingBar;
import android.widget.TextView;
public class MovieAdapter extends ArrayAdapter<Movie> {
private Context context;
private List<Movie> movies;
public MovieAdapter(Context context, List<Movie> movies)
{
super(context, R.layout.movie_layout, movies);
this.context = context;
this.movies = movies;
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
View movieView = convertView;
if(movieView == null)
{
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
movieView = inflater.inflate(R.layout.movie_layout, parent, false);
}
movieView.setTag(movies.get(position));
TextView txtTitle = (TextView) movieView.findViewById(R.id.txtTitle);
TextView txtDate = (TextView) movieView.findViewById(R.id.txtDate);
RatingBar ratingBar = (RatingBar) movieView.findViewById(R.id.ratingBar);
txtTitle.setText(movies.get(position).MovieTitle);
txtDate.setText("Date Viewed: "+movies.get(position).dateViewed);
ratingBar.setIsIndicator(true);
ratingBar.setNumStars(movies.get(position).rating);
ratingBar.setRating(movies.get(position).rating);
return movieView;
}
}
名单片段:
import java.util.Comparator;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Fragment;
import android.content.DialogInterface;
import android.util.Log;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.TextView;
public class MyListFragment extends Fragment{
Movie movie;
MovieAdapter adapter;
MovieSelectedListener callBack;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View view = inflater.inflate(R.layout.list_fragment, container, false);
ListView movieList = (ListView)view.findViewById(R.id.movieList);
movieList.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
TextView movie = (TextView)view.findViewById(R.id.txtTitle);
String title = movie.getText().toString();
callBack.onMovieSelected(title);
}
});
if (getArguments() != null)
movie = (Movie)getArguments().getSerializable("Movie");
Log.v("PASSED","Got here");
adapter = new MovieAdapter(getActivity(), movie.movies);
movieList.setAdapter(adapter);
movieList.setLongClickable(true);
movieList.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, final View view,
int position, long id) {
// TODO Auto-generated method stub
AlertDialog.Builder dialog = new AlertDialog.Builder(getActivity());
dialog.setMessage("Are you sure you want to delete this movie?");
dialog.setTitle("Alert Message");
dialog.setCancelable(false);
dialog.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
TextView movie = (TextView)view.findViewById(R.id.txtTitle);
String title = movie.getText().toString();
callBack.onDeleteSelected(title, adapter);
}
});
dialog.setNegativeButton("No",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
});
dialog.show();
return false;
}
});
return view;
}
public interface MovieSelectedListener
{
public void onMovieSelected(String movie);
public void onDeleteSelected(String movie, MovieAdapter adapter);
}
@Override
public void onAttach(Activity activity)
{
super.onAttach(activity);;
try
{
callBack = (MovieSelectedListener) activity;
}
catch (ClassCastException e) {
throw new ClassCastException(activity.toString()
+ " must implement MovieSelectedListener");
}
}
public void sortTitle()
{
adapter.sort(new Comparator<Movie>() {
public int compare(Movie lhs, Movie rhs) {
return lhs.MovieTitle.compareTo(rhs.MovieTitle);
}
});
adapter.notifyDataSetChanged();
}
public void sortDateViewed()
{
adapter.sort(new Comparator<Movie>() {
public int compare(Movie lhs, Movie rhs) {
return lhs.dateViewed.compareTo(rhs.dateViewed);
}
});
adapter.notifyDataSetChanged();
}
public void sortRating()
{
adapter.sort(new Comparator<Movie>() {
public int compare(Movie lhs, Movie rhs) {
return ((Integer)lhs.rating).compareTo(rhs.rating);
}
});
adapter.notifyDataSetChanged();
}
}
查看弗拉gment
import android.app.Fragment;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.RatingBar;
import android.widget.TextView;
public class ViewFragment extends Fragment {
Movie curMovie = new Movie("Empty", "Empty", "Empty", 5, "Empty", "Empty", "Empty", "Empty");
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View view = inflater.inflate(R.layout.view_fragment, container, false);
if (getArguments() != null)
curMovie = (Movie)getArguments().getSerializable("curMovie");
TextView titleTxt = (TextView)view.findViewById(R.id.titleTxt);
titleTxt.setText(curMovie.MovieTitle);
TextView genreTxt = (TextView)view.findViewById(R.id.genreTxt);
genreTxt.setText(curMovie.genre);
TextView actorsTxt = (TextView)view.findViewById(R.id.actorsTxt);
actorsTxt.setText(curMovie.actors);
RatingBar ratingRes = (RatingBar)view.findViewById(R.id.ratingRes);
ratingRes.setIsIndicator(true);
ratingRes.setNumStars(curMovie.rating);
ratingRes.setRating(curMovie.rating);
TextView dateWatchedTxt = (TextView)view.findViewById(R.id.dateWatchedTxt);
dateWatchedTxt.setText(curMovie.dateViewed);
TextView watchedWithTxt = (TextView)view.findViewById(R.id.watchedWithTxt);
watchedWithTxt.setText(curMovie.viewedWith);
TextView watchedAtTxt = (TextView)view.findViewById(R.id.watchedAtTxt);
watchedAtTxt.setText(curMovie.viewedWhere);
TextView commentTxt = (TextView)view.findViewById(R.id.commentTxt);
commentTxt.setText(curMovie.comments);
// Inflate the layout for this fragment
return view;
}
}
电影:
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
public class Movie implements Serializable
{
String MovieTitle, dateViewed, actors, genre, comments, viewedWith, viewedWhere;
int rating;
public Movie(String MovieTitle, String dateViewed, String genre, int rating, String actors, String comments, String viewedWith, String viewedWhere)
{
this.MovieTitle = MovieTitle;
this.dateViewed = dateViewed;
this.genre = genre;
this.rating = rating;
this.actors = actors;
this.comments = comments;
this.viewedWith = viewedWith;
this.viewedWhere = viewedWhere;
}
final List<Movie> movies = new ArrayList<Movie>();
public Movie(){
}
public void addMovie(String MovieTitle, String dateViewed, String genre, int rating, String actors, String comments, String viewedWith, String viewedWhere)
{
movies.add(new Movie(MovieTitle, dateViewed, genre, rating, actors, comments, viewedWith, viewedWhere));
}
public void deleteMovie(String movieTitle)
{
Movie toDelete = getMovie(movieTitle);
movies.remove(toDelete);
}
public Movie getMovie(String movie)
{
for(Movie mov:movies)
{
if(mov.MovieTitle.equals(movie))
{
return mov;
}
}
return null;
}
}
添加的电影:
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.EditText;
import android.widget.RatingBar;
import android.widget.Toast;
public class AddMovie extends Activity
{
EditText title2;
EditText genre2;
EditText actors2;
RatingBar rating2;
EditText date2;
EditText watchedWith2;
EditText watchedAt2;
EditText comment2;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add_movie);
//savedInstance
title2 = (EditText)findViewById(R.id.title);
genre2 = (EditText)findViewById(R.id.genre);
actors2 = (EditText)findViewById(R.id.actors);
rating2 = (RatingBar)findViewById(R.id.rating);
date2 = (EditText)findViewById(R.id.dateWatched);
watchedWith2 = (EditText)findViewById(R.id.watchedWith);
watchedAt2 = (EditText)findViewById(R.id.watchedAt);
comment2 = (EditText)findViewById(R.id.comment);
if ((savedInstanceState != null) && (savedInstanceState.containsKey("TITLE_STATE_KEY")))
{
title2.setText(savedInstanceState.getString("TITLE_STATE_KEY"));
actors2.setText(savedInstanceState.getString("ACTORS_STATE_KEY"));
genre2.setText(savedInstanceState.getString("GENRE_STATE_KEY"));
comment2.setText(savedInstanceState.getString("GC_STATE_KEY"));
watchedWith2.setText(savedInstanceState.getString("WITH_STATE_KEY"));
watchedAt2.setText(savedInstanceState.getString("LOCATION_STATE_KEY"));
date2.setText(savedInstanceState.getString("DATE_STATE_KEY"));
rating2.setRating(savedInstanceState.getFloat("RATING_STATE_KEY"));
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.add_movie, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
switch(item.getItemId())
{
case R.id.action_settings:
return true;
case R.id.action_done:
done();
default:
return super.onOptionsItemSelected(item);
}
}
public void done()
{
EditText title = (EditText)findViewById(R.id.title);
String titleText = title.getText().toString();
EditText genre = (EditText)findViewById(R.id.genre);
String genreText = genre.getText().toString();
EditText actors = (EditText)findViewById(R.id.actors);
String actorsText = actors.getText().toString();
RatingBar rating = (RatingBar)findViewById(R.id.rating);
int ratingValue = Math.round(rating.getRating());
EditText date = (EditText)findViewById(R.id.dateWatched);
String dateWatched = date.getText().toString();
EditText watchedWith = (EditText)findViewById(R.id.watchedWith);
String watchedWithText = watchedWith.getText().toString();
EditText watchedAt = (EditText)findViewById(R.id.watchedAt);
String watchedAtText = watchedAt.getText().toString();
EditText comment = (EditText)findViewById(R.id.comment);
String commentText = comment.getText().toString();
Intent intent = new Intent(AddMovie.this, MainActivity.class);
intent.putExtra("titleText", titleText);
intent.putExtra("genreText", genreText);
intent.putExtra("actorsText", actorsText);
intent.putExtra("ratingValue", ratingValue);
intent.putExtra("dateWatched", dateWatched);
intent.putExtra("watchedWithText", watchedWithText);
intent.putExtra("watchedAtText", watchedAtText);
intent.putExtra("commentText", commentText);
setResult(RESULT_OK, intent);
finish();
}
@Override
public void onSaveInstanceState(Bundle saveInstanceState)
{
saveInstanceState.putString("TITLE_STATE_KEY", title2.getText().toString());
saveInstanceState.putString("GENRE_STATE_KEY", genre2.getText().toString());
saveInstanceState.putString("GC_STATE_KEY", comment2.getText().toString());
saveInstanceState.putString("DATE_STATE_KEY", date2.getText().toString());
saveInstanceState.putString("ACTORS_STATE_KEY", actors2.getText().toString());
saveInstanceState.putString("WITH_STATE_KEY", watchedWith2.getText().toString());
saveInstanceState.putString("LOCATION_STATE_KEY", watchedAt2.getText().toString());
saveInstanceState.putFloat("RATING_STATE_KEY", rating2.getRating());
super.onSaveInstanceState(saveInstanceState);
}
}
- 1. 如何正确使用ViewPager片段?
- 2. 如何正确使用片段
- 3. 正确使用子子片段(子)FragmentManager
- 4. 如何正确关闭片段?
- 5. 如何得到正确的片段
- 6. 片段不正确实例
- 7. 麻烦片段正确
- 8. 片段正确堆叠
- 9. 片段正确的方式
- 10. 如何正确地使一个片段旋转
- 11. 如何正确地使这个JS片段内容不可知?
- 12. onResume调用“死”片段 - 如何正确恢复?
- 13. 如何正确地将多个片段添加到片段转换?
- 14. 如何使用片段
- 15. 如何使用片段
- 16. Django片段。如何使用?
- 17. 正确模式的Android应用程序使用片段
- 18. 如何在使用markdown时将多行xml片段正确粘贴到github wiki
- 19. 片段活动:正确的片段实例
- 20. 正确的开关caseonclicklistener与片段
- 21. 片段不能正确填充屏幕
- 22. 儿童片段没有正确恢复
- 23. 片段未被正确替换
- 24. Android片段没有正确替换
- 25. 嵌套片段转换不正确
- 26. 片段没有正确替换
- 27. 恢复活动与正确的片段
- 28. 指定正确的android片段旋转
- 29. 地图片段Z索引不正确
- 30. vim正确缩进python片段
你有没有任何机会看看官方开发者文档? http://developer.android.com/guide/components/fragments.html 另一件事可能是从向导中创建一个项目,在这个项目中可以使用实现了Fragments的完整应用程序。 – Darwind
模糊的问题。你应该自己学习谷歌,并提出具体问题还没有问。 – princepiero