这是来自'不同的java文件'的我的java:
public class MainPage extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {
ArrayList<HashMap<String, String>> Item_List;
TabLayout tabLayout;
ViewPageAdapter viewPageAdapter;
ViewPager viewPager;
ImageView pfp;
ProgressDialog PD_three;
Bitmap bitmap;
TextView usernameToolbar;
Intent postActivity;
Bitmap cropImg;
private int PICK_IMAGE_REQUEST = 1;
private String KEY_IMAGE = "ProfilePicture";
private String KEY_NAME = "Name";
private String KEY_USERTOKEN = "UserToken";
private String UserToken;
final int CROP_PIC_REQUEST_CODE = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_page);
initTypeface();
PD_three = new ProgressDialog(this);
PD_three.setCancelable(false);
PD_three.setTitle("Please Wait...");
PD_three.setMessage("Retrieving Data from Database...");
getProfileInfo();
String username = getIntent().getStringExtra("Username");
TextView tv = (TextView) findViewById(R.id.usernameND);
tv.setText(username);
//id's
pfp = (ImageView) findViewById(R.id.imageView_one);
//SearchIntent
Intent searchI = getIntent();
if (Intent.ACTION_SEARCH.equals(searchI.getAction())) {
String query = searchI.getStringExtra(SearchManager.QUERY);
Toast.makeText(MainPage.this, query, Toast.LENGTH_SHORT).show();
}
//Toolbar
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setTitle(null);
//Tabs
tabLayout = (TabLayout) findViewById(R.id.tablayout_two);
viewPager = (ViewPager) findViewById(R.id.viewPager_two);
viewPageAdapter = new ViewPageAdapter(getSupportFragmentManager());
viewPageAdapter.addFragments(new FeedFragment(), "Feed");
viewPageAdapter.addFragments(new MessagesFragment(), "Messages");
viewPageAdapter.addFragments(new NotificationsFragment(), "Notifications");
viewPager.setAdapter(viewPageAdapter);
tabLayout.setupWithViewPager(viewPager);
//NavigationDrawer
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.setDrawerListener(toggle);
toggle.syncState();
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
}
@Override
public void onBackPressed() {
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
} else {
super.onBackPressed();
}
}
@Override
public boolean onNavigationItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.profile) {
Intent i = new Intent(this, Profile.class);
startActivity(i);
} else if (id == R.id.whatshot) {
Intent i = new Intent(this, WhatsHot.class);
startActivity(i);
} else if (id == R.id.trending) {
Intent i = new Intent(this, Trending.class);
startActivity(i);
} else if (id == R.id.radioplayer) {
Intent i = new Intent(this, Radio.class);
startActivity(i);
} else if (id == R.id.musicplayer) {
Intent i = new Intent(this, MusicPlayer.class);
startActivity(i);
} else if (id == R.id.settings) {
Intent i = new Intent(this, Settings.class);
startActivity(i);
} else if (id == R.id.info) {
Intent i = new Intent(this, Info.class);
startActivity(i);
}
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
return true;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main_menu, menu);
SearchView searchView = (SearchView) menu.findItem(R.id.search_view).getActionView();
SearchManager searchManager = (SearchManager) getSystemService(SEARCH_SERVICE);
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
return super.onCreateOptionsMenu(menu);
}
//ImageInfo
//Typeface
private void initTypeface() {
Typeface myTypeface = Typeface.createFromAsset(getAssets(), "fonts/Amble-Regular.ttf");
TextView text = (TextView) findViewById(R.id.toolbarTitle);
text.setTypeface(myTypeface);
myTypeface = Typeface.createFromAsset(getAssets(), "fonts/Amble-Regular.ttf");
text = (TextView) findViewById(R.id.usernameND);
text.setTypeface(myTypeface);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Log.v(MainPage.class.getSimpleName(), "hey=" + requestCode + resultCode);
if (resultCode == CROP_PIC_REQUEST_CODE || resultCode == 2 || resultCode == -1) {
if (requestCode == CROP_PIC_REQUEST_CODE) {
if (data != null) {
Bundle extras = data.getExtras();
Bitmap image = extras.getParcelable("data");
pfp.setImageBitmap(image);
UploadImage();
bitmap = image;
}
}
}
}
private void getProfileInfo() {
Intent I = getIntent();
String Uname = I.getStringExtra("Username");
final String Username = Uname.replaceAll("\\s", "");
RequestQueue queue = Volley.newRequestQueue(MainPage.this);
PD_three.show();
String UPLOAD_URL = "http://10.0.0.177/Echo/ServerFilesApp/GetProfileInfo.php?Username=" + Username;
StringRequest stringRequest = new StringRequest(Request.Method.GET, UPLOAD_URL, new Response.Listener<String>() {
@Override
public Bitmap onResponse(String response) {
PD_three.dismiss();
UserToken = response;
getProfilePicture();
return null;
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
PD_three.dismiss();
Toast.makeText(MainPage.this, error.toString(), Toast.LENGTH_LONG).show();
}
});
queue.add(stringRequest);
}
private void getProfilePicture() {
PD_three.show();
RequestQueue queue = Volley.newRequestQueue(MainPage.this);
String IMAGE_URL = "http://10.0.0.177/Echo/Users/" + UserToken + "/ProfilePicture.jpg";
pfp = (ImageView) findViewById(R.id.imageView_one);
ImageRequest request = new ImageRequest(IMAGE_URL,
new Response.Listener<Bitmap>() {
@Override
public Bitmap onResponse(Bitmap bitmap) {
cropImg = Bitmap.createBitmap(bitmap, 0, 0, 99, 99);
pfp.setImageBitmap(cropImg);
PD_three.dismiss();
return cropImg;
}
}, 0, 0, ImageView.ScaleType.FIT_CENTER, Bitmap.Config.RGB_565,
new Response.ErrorListener() {
public void onErrorResponse(VolleyError error) {
PD_three.dismiss();
pfp.setImageResource(R.drawable.ic_user_b);
Toast.makeText(MainPage.this, "Error on retrieving profile pic.", Toast.LENGTH_LONG).show();
}
});
queue.add(request);
}
private void UploadImage() {
RequestQueue queue = Volley.newRequestQueue(MainPage.this);
String UPLOAD_URL = "http://10.0.0.177/Echo/ServerFilesApp/UpdateProfilePicture.php";
PD_three.show();
StringRequest stringRequest = new StringRequest(Request.Method.POST, UPLOAD_URL,
new Response.Listener<String>() {
@Override
public Bitmap onResponse(String response) {
// getProfilePicture();
PD_three.dismiss();
Log.v(MainPage.class.getSimpleName(), "hey=hey");
getProfilePicture();
return null;
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
PD_three.dismiss();
Toast.makeText(MainPage.this, error.toString(), Toast.LENGTH_LONG).show();
}
}) {
@Override
protected Map<String, String> getParams() throws AuthFailureError {
String Image = getImageUri(bitmap);
String Name = UserToken + "/ProfilePicture";
Map<String, String> params = new Hashtable<String, String>();
params.put(KEY_IMAGE, Image);
params.put(KEY_NAME, Name);
params.put(KEY_USERTOKEN, UserToken);
return params;
}
};
queue.add(stringRequest);
}
public String getImageUri(Bitmap bmp) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte[] imageBytes = baos.toByteArray();
String encodedImage = Base64.encodeToString(imageBytes, Base64.DEFAULT);
return encodedImage;
}
public void postClick(View view) {
Intent I = getIntent();
String Uname = I.getStringExtra("Username");
final String Username = Uname.replaceAll("\\s", "");
//COMPRESS PFP
ByteArrayOutputStream stream = new ByteArrayOutputStream();
cropImg.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();
postActivity = new Intent(MainPage.this, PostFragment.class);
postActivity.putExtra("UserToken", UserToken);
postActivity.putExtra("Username", Username);
postActivity.putExtra("profilePicture", byteArray);
MainPage.this.startActivity(postActivity);
//MainPage.this.overridePendingTransition(R.anim.slide_down, R.anim.slide_up);
}
public void onPfpClick(View view) {
Intent cropImage = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
cropImage.putExtra("crop", "true");
cropImage.putExtra("aspectX", 1);
cropImage.putExtra("aspectY", 1);
cropImage.putExtra("outputX", 100);
cropImage.putExtra("outputY", 100);
cropImage.putExtra("return-data", true);
setResult(RESULT_OK, cropImage);
startActivityForResult(cropImage, CROP_PIC_REQUEST_CODE);
}
private String Username() {
String Username = getIntent().getStringExtra("Username");
return Username;
}
}
这是我的片段java代码:
public class FeedFragment extends Fragment {
private static final String TAG = FeedFragment.class.getSimpleName();
private FeedListAdapter listAdapter;
private List<FeedItem> feedItems;
String UsernamePast;
String UserTokenPast;
Cache cache;
Entry entry;
String URL_FEED;
@SuppressLint("NewApi")
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_feed, container, false);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
ListView listView = (ListView) getView().findViewById(R.id.FeedContentList);
feedItems = new ArrayList<FeedItem>();
listAdapter = new FeedListAdapter(getContext(), feedItems);
listView.setAdapter(listAdapter);
// We first check for cached request
cache = AppController.getInstance().getRequestQueue().getCache();
URL_FEED = "http://10.0.0.177/Echo/ServerFilesApp/feed.json";
entry = cache.get(URL_FEED);
getFeedContent();
}
public void getFeedContent() {
if (entry != null) {
// fetch the data from cache
try {
String data = new String(entry.data, "UTF-8");
try {
parseJsonFeed(new JSONObject(data));
} catch (JSONException e) {
e.printStackTrace();
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
} else {
// making fresh volley request and getting json
JsonObjectRequest jsonReq = new JsonObjectRequest(Method.GET,
URL_FEED, null, new Response.Listener<JSONObject>() {
@Override
public Bitmap onResponse(JSONObject response) {
VolleyLog.d(TAG, "Response: " + response.toString());
Log.v(TAG, "hey=" + "heu");
if (response != null) {
parseJsonFeed(response);
}
return null;
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d(TAG, "Error: " + error.getMessage());
}
});
// Adding request to volley request queue
AppController.getInstance().addToRequestQueue(jsonReq);
}
}
/**
* Parsing json response and passing the data to feed view list adapter
*/
private void parseJsonFeed(JSONObject response) {
try {
JSONArray feedArray = response.getJSONArray("feed");
for (int i = 0; i < feedArray.length(); i++) {
JSONObject feedObj = (JSONObject) feedArray.get(i);
FeedItem item = new FeedItem();
item.setId(feedObj.getInt("id"));
item.setName(feedObj.getString("name"));
// Image might be null sometimes
String image = feedObj.isNull("image") ? null : feedObj
.getString("image");
item.setImage(image);
item.setStatus(feedObj.getString("status"));
item.setProfilePicture(feedObj.getString("profilePic"));
item.setTimeStamp(feedObj.getString("timeStamp"));
// url might be null sometimes
String feedURL = feedObj.isNull("url") ? null : feedObj
.getString("url");
item.setURL(feedURL);
item.setLitBackground(R.drawable.fire);
feedItems.add(item);
}
FeedItem item2 = new FeedItem();
item2.setId(0);
item2.setName("SORRY");
// Image might be null sometimes
item2.setImage(null);
item2.setStatus("This Is Everything there is for Now. Refresh to get More Content");
item2.setProfilePicture(null);
item2.setTimeStamp(null);
item2.setURL(null);
feedItems.add(item2);
// notify data changes to list adapter
listAdapter.notifyDataSetChanged();
} catch (JSONException e) {
e.printStackTrace();
}
}
@Override
public void onResume() {
super.onResume();
getFeedContent();
}
@Override
public void onPause() {
super.onPause();
cache.clear();
}
}
为了更深入,我想弄清楚的是如何从不同的java文件中刷新片段?
我们的目标是像Facebook一样提供Feed,但它不会加载我们发布的帖子。怎么可能呢? (如果可能,最好使用Google排球请求)
答案 0 :(得分:0)
如果不同的java文件是片段的容器活动,那么该活动必须具有该特定片段的引用,您可以轻松地使用此实例控制片段。但请确保当您显示此片段时,然后是您在活动中使用的实例,该实例用于显示您在片段中已更改的内容,您将无法获得该更新。你的代码是用于片段的:
tabLayout = (TabLayout) findViewById(R.id.tablayout_two);
viewPager = (ViewPager) findViewById(R.id.viewPager_two);
viewPageAdapter = new ViewPageAdapter(getSupportFragmentManager());
viewPageAdapter.addFragments(new FeedFragment(), "Feed");
viewPageAdapter.addFragments(new MessagesFragment(), "Messages");
viewPageAdapter.addFragments(new NotificationsFragment(), "Notifications");
viewPager.setAdapter(viewPageAdapter);
tabLayout.setupWithViewPager(viewPager);
每次都会创建新的片段实例。根据您的要求,这应该是:
FeedFragment feedFragment = new FeedFragment();
MessagesFragment messagesFragment = new MessagesFragment();
NotificationFragment notifyFragment = new NotificationFragment();
tabLayout = (TabLayout) findViewById(R.id.tablayout_two);
viewPager = (ViewPager) findViewById(R.id.viewPager_two);
viewPageAdapter = new ViewPageAdapter(getSupportFragmentManager());
viewPageAdapter.addFragments(feedFragment, "Feed");
viewPageAdapter.addFragments(messagesFragment, "Messages");
viewPageAdapter.addFragments(notifyFragment, "Notifications");
viewPager.setAdapter(viewPageAdapter);
tabLayout.setupWithViewPager(viewPager);
现在有了片段的引用,你可以对片段做任何你想做的事情。在上面的代码片段中,引用是局部变量,您可以将其设置为全局,并从活动中的任何位置访问此引用。
如果您有任何疑问,请告诉我。