Java Can';我不明白为什么字符串值突然变为null?
她的密码是我的Java Can';我不明白为什么字符串值突然变为null?,java,android,string,android-intent,oncreate,Java,Android,String,Android Intent,Oncreate,她的密码是我的 public static class DetailFragment extends Fragment { private String forecastData; private static final String LOG_TAG = DetailFragment.class.getSimpleName(); private static final String FORECAST_SHARE_HASHTAG ="#Su
public static class DetailFragment extends Fragment {
private String forecastData;
private static final String LOG_TAG = DetailFragment.class.getSimpleName();
private static final String FORECAST_SHARE_HASHTAG ="#SunshineApp";
public DetailFragment() {
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_detail, container, false);
//receive forecast data from the ForeCast Fragment
Intent intent=getActivity().getIntent();
forecastData=intent.getStringExtra(Intent.EXTRA_TEXT);
Log.v(LOG_TAG,"data is "+forecastData);
TextView textView=(TextView)rootView.findViewById(R.id.detail_text);
textView.setText(forecastData);
return rootView;
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.menu_detailfragment,menu);
MenuItem menuItem=menu.findItem(R.id.action_share);
// Get the provider and hold onto it to set/change the share intent.
ShareActionProvider mShareActionProvider =
(ShareActionProvider) MenuItemCompat.getActionProvider(menuItem);
// Attach an intent to this ShareActionProvider. You can update this at any time,
// like when the user selects a new piece of data they might like to share.
if (mShareActionProvider!= null ) {
mShareActionProvider.setShareIntent(createShareIntent());
}
else
{
Log.v(LOG_TAG,"Share Action Provider is null");
}
}
public Intent createShareIntent()
{
Log.v(LOG_TAG,"data is "+forecastData);
Intent intent=new Intent(Intent.ACTION_SEND);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_TEXT,forecastData+DetailFragment.FORECAST_SHARE_HASHTAG);
Log.v(LOG_TAG,"data is "+forecastData);
return intent;
}
我绝对肯定我的意图是正确的,因为我可以与其他应用程序共享,它可以工作,如果你看到下面的日志,这是很清楚的
为什么会这样,我认为OnCreate()视图方法是在onCreateOptions菜单()之前调用的
?我该怎么做才能纠正这个问题?这里有一个想法:
- 根据您的日志,输出首先显示在
方法中,最后一个显示在onCreateOptions菜单()
onCreateView()中。这意味着在
之前调用了onCreateView
oncreateoptions菜单()
- 尝试将
移动到其他地方,可能是在构造函数中,该构造函数应确保在SethasOptions菜单(true)
和onCreate
之后调用onCreateView
。试试看onCreateOptions菜单()
- 根据您的日志,输出首先显示在
方法中,最后一个显示在onCreateOptions菜单()
onCreateView()中。这意味着在
之前调用了onCreateView
oncreateoptions菜单()
- 尝试将
移动到其他地方,可能是在构造函数中,该构造函数应确保在SethasOptions菜单(true)
和onCreate
之后调用onCreateView
。试试看onCreateOptions菜单()
- 根据您的日志,输出首先显示在
方法中,最后一个显示在onCreateOptions菜单()
onCreateView()中。这意味着在
之前调用了onCreateView
oncreateoptions菜单()
- 尝试将
移动到其他地方,可能是在构造函数中,该构造函数应确保在SethasOptions菜单(true)
和onCreate
之后调用onCreateView
。试试看onCreateOptions菜单()
- 根据您的日志,输出首先显示在
方法中,最后一个显示在onCreateOptions菜单()
onCreateView()中。这意味着在
之前调用了onCreateView
oncreateoptions菜单()
- 尝试将
移动到其他地方,可能是在构造函数中,该构造函数应确保在SethasOptions菜单(true)
和onCreate
之后调用onCreateView
。试试看onCreateOptions菜单()
- 这里有一个想法:
- 这里有一个想法:
- 这里有一个想法:
onActivityCreated表示关联的活动已完成其方法onCreate()并已设置。您应该如何将代码从onCreateView()移动到onActvivityCreated() onCreateView用于返回视图
onActivityCreated表示关联的活动已完成其方法onCreate()并已设置。您应该如何将代码从onCreateView()移动到onActvivityCreated() onCreateView用于返回视图
onActivityCreated表示关联的活动已完成其方法onCreate()并已设置。您应该如何将代码从onCreateView()移动到onActvivityCreated() onCreateView用于返回视图
onActivityCreated表示关联的活动已完成其方法onCreate()并已设置。EDIT:i moved
Intent Intent=getActivity().getIntent();forecastData=intent.getStringExtra(intent.EXTRA_TEXT)
到onCreate()
方法,仍然是sam结果了解如何使用调试器。尝试在没有它的情况下构建应用程序就像尝试在缺少一半工具的情况下构建房子一样。日志记录对于基本测试来说还不够吗?不。如果您使用调试器完成此操作,您将在比编写此问题所需的时间更短的时间内发现问题。你可以检查意图和它的额外内容,并确定到底发生了什么。日志记录用于,呃,Logging.EDIT:我移动了Intent-Intent=getActivity().getIntent();forecastData=intent.getStringExtra(intent.EXTRA_TEXT)
到onCreate()
方法,仍然是sam结果了解如何使用调试器。尝试在没有它的情况下构建应用程序就像尝试在缺少一半工具的情况下构建房子一样。日志记录对于基本测试来说还不够吗?不。如果您使用调试器完成此操作,您将在比编写此问题所需的时间更短的时间内发现问题。你可以检查意图和它的额外内容,并确定到底发生了什么。日志记录用于,呃,Logging.EDIT:我移动了Intent-Intent=getActivity().getIntent();forecastData=intent.getStringExtra(intent.EXTRA_TEXT)
到onCreate()
方法,仍然是sam结果了解如何使用调试器。尝试在没有它的情况下构建应用程序就像尝试在缺少一半工具的情况下构建房子一样。日志记录对于基本测试来说还不够吗?不。如果您使用调试器完成此操作,您将在比编写此问题所需的时间更短的时间内发现问题。你可以检查意图和它的额外内容,并确定到底发生了什么。日志记录用于,呃,Logging.EDIT:我移动了Intent-Intent=getActivity().getIntent();forecastData=intent.getStringExtra(intent.EXTRA_TEXT)
到onCreate()
方法,仍然是sam结果了解如何使用调试器。尝试在没有它的情况下构建应用程序就像尝试在缺少一半工具的情况下构建房子一样。日志记录还不足以进行基本测试吗?不。如果您使用调试器完成此操作,您会发现
01-04 18:36:02.370 6121-6121/com.example.droid.sunshine V/DetailFragment﹕ in optionMenu method data is null
01-04 18:36:02.380 6121-6121/com.example.droid.sunshine V/DetailFragment﹕ in create intent data is null
01-04 18:36:02.380 6121-6121/com.example.droid.sunshine V/DetailFragment﹕ in create intent data is null
01-04 18:36:02.650 6121-6121/com.example.droid.sunshine V/DetailFragment﹕ in view method data is Wed, Jan 7 - Clear - 27/24