Android 从给定的视图中找不到合适的 parent
Android No suitable parent found from the given view
我正在尝试通过在 Utils.java 文件中将其创建为函数来为我的应用程序实现通用 SnackBar 代码。一切正常,但每当我尝试打开此 SnackBar 时,我的应用程序总是崩溃。 logcat 中记录的错误是 java.lang.IllegalArgumentException: No suitable parent found from the given view. Please provide a valid view.
MainActivity.java、Utils.java和完整的logcat错误块中的示例代码如下。将不胜感激...提前致谢。
MainActivity.java
public class MainActivity extends AppCompatActivity {
public Utils util;
public Constants k;
@Override
protected void onCreate(Bundle savedInstanceState) {
util = new Utils(this);
k = new Constants();
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
util.snackBar("A Simple SnackBar!");
}
});
Utils.Java
import android.content.Context;
import android.content.Intent;
import android.support.design.widget.Snackbar;
import android.view.View;
import com.example.wp.wordpressvlog.MainActivity;
import com.example.wp.wordpressvlog.NewProductActivity;
import com.example.wp.wordpressvlog.R;
public class Utils {
private Context _con;
public View v;
public Utils (Context _con) {
this._con = _con;
}
public void snackBar(String msg) {
Snackbar.make(v, msg, Snackbar.LENGTH_LONG).setAction("Action", null).show();
}
}
logcat错误
07-05 20:17:52.125 18456-18456/com.movieduka.wp.wordpressvlog E/MultiWindowProxy: getServiceInstance failed!
07-05 20:18:37.595 18456-18456/com.movieduka.wp.wordpressvlog E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.movieduka.wp.wordpressvlog, PID: 18456
java.lang.IllegalArgumentException: No suitable parent found from the given view. Please provide a valid view.
at android.support.design.widget.Snackbar.make(Snackbar.java:174)
at com.movieduka.wp.wordpressvlog.utils.Utils.snackBar(Utils.java:29)
at com.movieduka.wp.wordpressvlog.MainActivity.onClick(MainActivity.java:40)
at android.view.View.performClick(View.java:5273)
at android.view.View$PerformClick.run(View.java:21542)
at android.os.Handler.handleCallback(Handler.java:815)
at android.os.Handler.dispatchMessage(Handler.java:104)
at android.os.Looper.loop(Looper.java:207)
at android.app.ActivityThread.main(ActivityThread.java:5728)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:679)
utils.java 的变化
public void snackBar(String msg, View v) {
Snackbar.make(v, msg, Snackbar.LENGTH_LONG).setAction("Action", null).show();
}
MainActivity.java
的变化
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
util.snackBar("A Simple SnackBar!", view);
}
});
这样改变你的方法
util.snackBar(view,"A Simple SnackBar!");
public void snackBar(View view,String msg) {
Snackbar.make(view, msg, Snackbar.LENGTH_LONG).setAction("Action", null).show();
}
我正在尝试通过在 Utils.java 文件中将其创建为函数来为我的应用程序实现通用 SnackBar 代码。一切正常,但每当我尝试打开此 SnackBar 时,我的应用程序总是崩溃。 logcat 中记录的错误是 java.lang.IllegalArgumentException: No suitable parent found from the given view. Please provide a valid view.
MainActivity.java、Utils.java和完整的logcat错误块中的示例代码如下。将不胜感激...提前致谢。
MainActivity.java
public class MainActivity extends AppCompatActivity {
public Utils util;
public Constants k;
@Override
protected void onCreate(Bundle savedInstanceState) {
util = new Utils(this);
k = new Constants();
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
util.snackBar("A Simple SnackBar!");
}
});
Utils.Java
import android.content.Context;
import android.content.Intent;
import android.support.design.widget.Snackbar;
import android.view.View;
import com.example.wp.wordpressvlog.MainActivity;
import com.example.wp.wordpressvlog.NewProductActivity;
import com.example.wp.wordpressvlog.R;
public class Utils {
private Context _con;
public View v;
public Utils (Context _con) {
this._con = _con;
}
public void snackBar(String msg) {
Snackbar.make(v, msg, Snackbar.LENGTH_LONG).setAction("Action", null).show();
}
}
logcat错误
07-05 20:17:52.125 18456-18456/com.movieduka.wp.wordpressvlog E/MultiWindowProxy: getServiceInstance failed! 07-05 20:18:37.595 18456-18456/com.movieduka.wp.wordpressvlog E/AndroidRuntime: FATAL EXCEPTION: main Process: com.movieduka.wp.wordpressvlog, PID: 18456 java.lang.IllegalArgumentException: No suitable parent found from the given view. Please provide a valid view. at android.support.design.widget.Snackbar.make(Snackbar.java:174) at com.movieduka.wp.wordpressvlog.utils.Utils.snackBar(Utils.java:29) at com.movieduka.wp.wordpressvlog.MainActivity.onClick(MainActivity.java:40) at android.view.View.performClick(View.java:5273) at android.view.View$PerformClick.run(View.java:21542) at android.os.Handler.handleCallback(Handler.java:815) at android.os.Handler.dispatchMessage(Handler.java:104) at android.os.Looper.loop(Looper.java:207) at android.app.ActivityThread.main(ActivityThread.java:5728) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:679)
utils.java 的变化
public void snackBar(String msg, View v) {
Snackbar.make(v, msg, Snackbar.LENGTH_LONG).setAction("Action", null).show();
}
MainActivity.java
的变化fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
util.snackBar("A Simple SnackBar!", view);
}
});
这样改变你的方法
util.snackBar(view,"A Simple SnackBar!");
public void snackBar(View view,String msg) {
Snackbar.make(view, msg, Snackbar.LENGTH_LONG).setAction("Action", null).show();
}