Java 变量';s值与指定的值不同

Java 变量';s值与指定的值不同,java,android,android-fragments,Java,Android,Android Fragments,我使用的是一个片段,它显示了关于一个对象的不同信息。在片段的onCreate中,我从对象中检索一些值并将它们存储在全局变量中: @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setHasOptionsMenu(true); String serializedShow = getArguments(

我使用的是一个片段,它显示了关于一个对象的不同信息。在片段的onCreate中,我从对象中检索一些值并将它们存储在全局变量中:

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setHasOptionsMenu(true);
        String serializedShow = getArguments().getString(SHOW_TO_LOAD);
        mShow = (new Gson()).fromJson(serializedShow, Show.class);
        mScope = mShow.getScope();
        mLanguage = MainActivity.getSystemLanguage();
        mLanguage = mLanguage.replace("_", "-");
        mId = Integer.valueOf(mShow.getShowId()).toString(); //this line is important
        Log.v(LOG_TAG, "DetailFragment onStart, Id is " + mId);
    }
正如您所看到的,我为这个变量指定了一个特定的ID。我使用日志检查mId的值是否正确,是否正确。到目前为止,一切进展顺利。 接下来,在代码中,用户可以单击按钮在浏览器中打开am url。每次创建此片段时,URL都是不同的(每次此片段显示不同的内容时)

如您所见,方法fetchIMDBId()被调用。我有一个日志行来检查之前在onCreate中设置的mId值是否相同。 它不一样,它是一个完全不同的值。 具体地说,是在前一个实例中显示的对象的id(如果该片段为空)

请告诉我我做错了什么。谢谢

E:变量声明

public class DetailFragment extends Fragment {
private static final String LOG_TAG = DetailFragment.class.getSimpleName();
...
private String mScope, mLanguage, mId;
...

@Override
public void onCreate(Bundle savedInstanceState) {
    ...
}

E:full source

尝试使用
this.mId
并检查片段对象是否与前一个相同


调用this.fetchIMDBId()。

我认为您没有正确地将mId分配给异步任务。您应该将mid应用于异步任务方法,以便调用每个片段中相应的mid

private void fetchIMDBId(String mId){
    Log.v(LOG_TAG, "starting IMDBAsyncTask with id " + mId);
    new Async4().execute(mId);
}
然后在片段中调用该方法

fetchIMDBId(this.mId);

中级变量还是实例变量?什么意思?我把申报单加在了主邮递上,有没有人在中邮递?您确定要检查的两个日志是针对同一个类实例的吗?传递的对象是有效的。登录oncreate返回的mId是正确的,A与此不同的是,不再触及mId变量。为了清晰起见,我添加了完整的源代码。仍然不起作用。onStart日志显示正确的值,但fetchIMDBId中的日志显示另一个值。您是否尝试将mId变量设置为静态?它可以工作我欠您一条命谢谢。我很高兴它帮助了您:)编码愉快
fetchIMDBId(this.mId);