我知道它适用于XML中的任何类型的视图,但是为什么在使用以编程方式创建的视图时它不起作用?
这是我的代码:
TextView tv = new TextView(getApplicationContext());
Snackbar snackbar = Snackbar.make(tv, "Welcome to AndroidHive", Snackbar.LENGTH_LONG);
snackbar.show();
这是我的错误:
*Process: com.cloudents.mysnackbar, PID: 9924
java.lang.NullPointerException
at android.support.design.widget.Snackbar.<init>(Snackbar.java:180)
at android.support.design.widget.Snackbar.make(Snackbar.java:206)
at com.cloudents.mysnackbar.MainActivity$2.onClick(MainActivity.java:39)
at android.view.View.performClick(View.java:4442)
at android.view.View$PerformClick.run(View.java:18473)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5105)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:792)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:608)
at dalvik.system.NativeStart.main(Native Method)*
答案 0 :(得分:1)
您无法使用TextView
,只是实例化以显示SnackBar
。它需要的是提交View
的合适的父。如果您没有,或者您不确定哪一个通过,请直接使用android.R.id.content
,
E.g。
Snackbar.make(findViewById(android.R.id.content), "Welcome to AndroidHive", Snackbar.LENGTH_LONG).show();
答案 1 :(得分:1)
是的,如果在您尝试展示TextView
之前将动态创建的Layout
添加到Snackbar
,请确保您可以,就像这里一样,
TextView tv = new TextView(getApplicationContext());
tv.setText("Button");
tv.setId(5);
((LinearLayout) findViewById(R.id.myLinearLayout)).addView(tv);
然后你可以很容易地做到,
Snackbar snackbar = Snackbar.make(tv, "Welcome to AndroidHive", Snackbar.LENGTH_LONG);
snackbar.show();
Snackbar将会出现。
答案 2 :(得分:1)
观点:
// create and execute UPDATE query
foreach($_POST['update_category'] as $number => $update_category) {
$query = "UPDATE goals SET category='$update_category',goal='".$_POST['update_goal'][$number]."' WHERE username='$username';";
mysql_query($query, $connection);
}
您要添加快餐栏视图的视图是不是快餐栏本身所以正如上面提到的@Blackbelt如果您只想将快餐栏添加到活动中使用findViewById(android.R.id。内容)另一方面,如果您想修改小吃栏视图本身的某些内容,如下所示:
Snackbar snackbar = Snackbar.make(view, "Welcome to AndroidHive",Snackbar.LENGTH_LONG);
snackbar.show();
此外,我还建议您在主布局中添加一个coordinatorlayout并添加小吃栏,以便用户可以滑动以关闭小吃栏。