小编Mic*_*lYe的帖子

ViewPager中的片段,无法获取当前的Fragment实例

在FragmentParentNewsDetail.java类中,我有一个ViewPager,然后我使用FragmentPagerAdapter将每个页面设置为相同的Fragment,如下所示:

@Override
    public Fragment getItem(int position)
    {
        String newsId = this.myNewsIds.get(position);
        Bundle bundle = new Bundle();
        bundle.putInt(FragmentNewsDetail.NEWS_ID, Integer.parseInt(newsId));
        FragmentNewsDetail fragmentNewsDetail = new FragmentNewsDetail();
        fragmentNewsDetail.setArguments(bundle);
        return fragmentNewsDetail;
    }
Run Code Online (Sandbox Code Playgroud)

在FragmentNewsDetail.java中,我有一个公共方法:

public String getNewsTitle()
{
    Log.d(TAG, "getNewsTitle:" + newsTitle);
    return newsTitle;
}
Run Code Online (Sandbox Code Playgroud)

然后我想在FragmentNewsDetail.java中调用getNewsTitle()方法,如下所示:

 newsTitle = ((FragmentNewsDetail)myAdapter.getItem(vpViewPager.getCurrentItem())).getNewsTitle(); 
Run Code Online (Sandbox Code Playgroud)

但getNewsTitle()总是返回"",我对此感到困惑.

通过以下方法修复:

public Fragment getCurrentFragment(ViewPager pager,
        FragmentPagerAdapter adapter)
{
    try
    {
        Method m = adapter
                .getClass()
                .getSuperclass()
                .getDeclaredMethod("makeFragmentName", int.class,
                        long.class);
        Field f = adapter.getClass().getSuperclass()
                .getDeclaredField("mFragmentManager");
        f.setAccessible(true);
        FragmentManager fm = (FragmentManager) f.get(adapter);
        m.setAccessible(true);
        String tag = null;
        tag …
Run Code Online (Sandbox Code Playgroud)

android fragment android-viewpager fragmentpageradapter

5
推荐指数
0
解决办法
2746
查看次数

重新打开应用程序时未调用Android Application-> onCreate()

public class MyApplication extends Application{

@Override
public void onCreate()
{
    super.onCreate();
    Log.d("*******:", "onCreate");
}}
Run Code Online (Sandbox Code Playgroud)
public class MainActivity extends ActionBarActivity{

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}}
Run Code Online (Sandbox Code Playgroud)
<application
    android:name=".MyApplication"
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".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>
Run Code Online (Sandbox Code Playgroud)

当第一次打开此应用程序时,MyApplication中的onCreate()方法已被调用,但是当我完成Activity(按Back Button),然后重新打开应用程序时,我发现MyApplication中的onCreate()方法未被调用.

奇怪的是,如果我在系统背景中"杀死"应用程序,然后重新打开它,我发现可以再次调用onCreate()方法.

我不知道为什么,我想在用户重新打开我的应用程序时获取操作,有人可以帮忙吗?谢谢!

android oncreate

4
推荐指数
1
解决办法
1568
查看次数