Tag: android fragments

在片段和活动之间进行通信 – 最佳实践

这个问题主要是征求关于处理我的应用程序的最佳方式的意见。 我有三个片段由一个活动处理。 片段A有一个可点击元素照片,片段B有4个可点击元素按钮。 另一个片段只显示单击照片时的详细信息。 我正在使用ActionBarSherlock。 前进和后退按钮需要分别将照片更改为下一个或上一个姿势。 我可以将照片和按钮保持在相同的片段中,但是想要将它们分开,以防我想在平板电脑中重新排列它们。 我需要一些建议 – 我应该将碎片A和B结​​合起来吗? 如果没有,我将需要弄清楚如何为3个可点击项目实现一个界面。 我考虑使用Roboguice,但我已经使用SherlockFragmentActivity进行扩展,所以这是不行的。 我看到提到Otto,但我没有看到关于如何包含在项目中的好教程。 您认为最佳设计实践应该是什么? 我还需要帮助弄清楚如何在片段和活动之间进行通信。 我想在应用程序中保留一些“全局”数据,比如姿势ID。 除了股票开发者的信息之外,我还能看到一些示例代码吗? 这不是那么有用。 顺便说一句,我已经在SQLite数据库中存储了每个姿势的所有信息。 这很容易。

在RecyclerView.Adapter中单击传递数据

我的片段上有一个RecyclerView ,显示我从FTP服务器加载的某些文件。 我正在尝试为每个项目设置DialogFragment ,因此当单击它时,将显示DialogFragment ,用户可以在其中选择是下载还是打开文件。 我的问题是: 我需要向我的对话框发送2件事: 目标片段,在用户选择要执行的操作后下载/打开文件。 这很容易用setTargetFragment() ,唯一的问题是我无法访问我的RecyclerView.ViewHolder的片段。 要下载/打开的文件的名称。 这样对话框就会将其发送到目标片段。 这里的问题是我无法访问RecyclerView.ViewHolder的数据集,因为它的静态和我的数据集不是。 为什么在ViewHolder上 如果有更好的地方,我会很高兴听到。 我在RecyclerView.ViewHolder尝试的原因是它可以访问该位置(被点击的项目)。 我想过在onBindViewHolder()上做这个,但是我可以访问数据集而不是位置。 我的适配器代码: public class FilesAdapter extends RecyclerView.Adapter { public final String TAG = “FILES_ADAPTER”; private FTPFile[] dataset; //some methods and stuff… public static class ViewHolder extends RecyclerView.ViewHolder { public final String TAG = “FILES_VH”; private final TextView nameTextView; private […]

如何将活动更改为碎片

我想将我的Activity改为Fragment我努力但我无法将我的活动更改为片段。 任何人都可以告诉我怎么做? 在哪里编辑我是Android上的新手。 请告诉我并提前致谢 这是我的活动: import android.app.Activity; import android.app.ProgressDialog; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.os.Bundle; import android.os.StrictMode; import android.view.View; import android.view.View.OnClickListener; import android.view.LayoutInflater; import android.view.ViewGroup; import android.view.Window; import android.view.WindowManager; import android.widget.Button; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; import com.example.phonebook.models.UserModel; import com.example.phonebook.services.ImageLoader; public class Welcome extends Activity { private ProgressDialog pDialog; Button […]

后台任务片段和“onSaveInstanceState后无法执行此操作”

我在Fragment中有以下AsyncTask(该示例被简化以清楚地显示错误): private class LoginTask extends AsyncTask { @Override protected Void doInBackground(Void… params) { // Do network login return null; } @Override protected void onPostExecute(Void result) { FragmentActivity act = (FragmentActivity) getActivity(); if (act != null && isAdded()) { act.getSupportFragmentManager().beginTransaction() .add(new LoginDialogFragment(), “loginMessage”).commit(); } } } 一旦在任务运行时离开应用程序,我收到了IllegalStateException: Can not perform this action after onSaveInstanceState 。 我想这是因为我在活动的onSaveInstanceState和活动中片段的取消附加之间调用它(或者因为在getActivity()调用和add-fragment调用之后活动未附加。 […]

从PauseHandler实现调用SupportFragmentManager

我正在尝试实现此处描述的PauseHandler: https://stackoverflow.com/a/8122789/1977132 我的活动是ActionBarActivity,processMessage方法中的代码调出一个对话框,给出错误Cannot resolve method ‘getSupportFragmentManager’ 遵循此处的建议: https : //stackoverflow.com/a/27425568/1977132 我试图将它更改为getFragmentManager(),但后来我得到错误Cannot resolve method ‘show(android.app.FragmentManager(), java.lang.String’ 我在这里粘贴了我认为相关的代码: import android.support.v4.app.DialogFragment; 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.support.v7.app.ActionBarActivity; public class PlaySession extends ActionBarActivity implements View.OnClickListener { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (savedInstanceState == null) { final Fragment state = new State(); final […]

片段在尝试从活动接收对象时崩溃

美好的一天, 我有一个问题,我的活动正在进行网络调用,当网络调用完成时,它使用从调用接收到的JSON对象中的数据对活动进行一些更改,然后将对象传递给同样的活动。 这些片段位于TabLayout中。 我遇到的问题是,如果我放入System.out.println(),它会打印出正确的数据。 我想要设置的那一刻说一个TextView与我在Fragment中收到的数据应用程序崩溃与Nullpointer。 当我使用Android工作室中的Debug调试它时,由于某种原因,TextView I设置始终为null。 执行初始网络呼叫的活动代码: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_listings); ButterKnife.bind(this); setSupportActionBar(toolbar); handleIntent(getIntent()); } private void handleIntent(Intent aIntent) { if (aIntent != null) { String tradeType = aIntent.getStringExtra(“itemType”); String tradeId = aIntent.getStringExtra(“itemId”); presenter = new ItemPresenterImpl(this, ItemBuyNowActivity.this); presenter.doListingServiceCall(tradeId); // <——- This is the where I send the Trade Id […]

从Activity中调用ViewPager中当前Fragment的方法

我在Android应用程序中监听网络活动。 当事件通过网络传来时,我想更新一些驻留在我的应用程序中不同片段内的TextView。 现在我有一个单一的屏幕应用程序,一次在屏幕上有一个片段。 如何在由FragmentStatePagerAdapter管理的ViewPager内部的现有Fragment上调用方法? 我能够正确地“绘制”UI,它按预期显示在屏幕上。 这一切都有效。 我正在努力做的是在后台线程向我的包含Activity发送消息时调用方法。 该线程长时间运行并将频繁更新每个TextView(想想倒计时器)。 {thread} – > Actvity.handleMessage() – > {current} Fragment.update(); 我试图辨别“当前”,屏幕上的片段是什么,以便我可以调用它上面的方法来更新其TextViews。 我试图使用我读过的findFragmentByTag方法,但它总是返回一个空的Fragment对象。 具体来说,我这样做: private String getFragmentTag(int viewPagerId, int fragmentPosition){ return “android:switcher:” + viewPagerId + “:” + fragmentPosition; } //Take the data from the thread (network) and react to it. @Override public boolean handleMessage(Message msg) { //tell the fragment to […]

在Android中绘制片段

我有以下代码: import android.app.Fragment; import android.graphics.Rect; import android.graphics.Typeface; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.animation.AlphaAnimation; import android.widget.TextView; public class MainFragment extends Fragment { protected AlphaAnimation fadeIn = new AlphaAnimation(0.0f , 1.0f ); public MainFragment(){} public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.main_fragment, container, false); String fontPath = “fonts/roboto.ttf”; […]

在动态创建的片段之间进行通信,从而产生空指针exception

我创建了一个ListFragment并在每个项目的ListFragment上尝试将List的值打开到其他Fragment 。 我已经成功创建了两个fragments并通过google docs中描述的活动通过interface进行通信。 但是,当我尝试在每个项目单击列表上创建一个新Fragment并通过接口进行通信时,我在该视图上获得Null Pointer Exception public class Details extends Fragment { ViewGroup view_details; static int count; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { view_details = (ViewGroup) inflater.inflate( R.layout.details, container , false); return view_details; } public void setTextView(String details_string){ Log.d(“TAG”, “”+details_string.toString()); TextView txt_view_details = (TextView) view_details.findViewById(R.id.txt_details); //Getting Null POinter Here txt_view_details.setText(details_string.toString()); […]

Android设置片段工具栏标题

片段交易我有一些小错误。 当我打开多个片段并按后退按钮并且工具栏上显示的标题错误时,会出现问题。 例如,从我的Home -> Expenses fragment ,我按下Expenses片段的后退按钮,工具栏上显示的标题是正确的。 但是,让我们说Home -> Expenses -> Incomes fragment ,然后我从Incomes片段按回按钮,它将返回Home片段,但工具栏上显示的标题将是’Expenses’而不是’Home’。 这是我为MainActivity设置的,它扩展了AppCompatActivity: // inside onCreate() put all these code //Setting Navigation View Item Selected Listener to handle the item click of the navigation menu navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { // This method will trigger on item Click of navigation menu @Override public boolean onNavigationItemSelected(MenuItem […]