【发布时间】:2021-11-06 00:40:51
【问题描述】:
我有一个应用程序。我希望它显示底部工作表对话框。但它崩溃了(下图中应用程序吐司的异常信息请查看)。我希望 BottomSheet 对话框位于非活动类中,如下面的代码
Utils.java
package com.my.newproject5;
import android.app.*;
import android.os.*;
import android.view.*;
import android.view.View.*;
import android.widget.*;
import android.content.*;
import android.content.res.*;
import android.graphics.*;
import android.graphics.drawable.*;
import android.media.*;
import android.net.*;
import android.text.*;
import android.text.style.*;
import android.util.*;
import android.webkit.*;
import android.animation.*;
import android.view.animation.*;
import java.io.*;
import java.util.*;
import java.util.regex.*;
import java.text.*;
import org.json.*;
import android.widget.Button;
import android.view.View;
import com.google.android.material.*;
import android.app.Fragment;
import android.app.FragmentManager;
import android.app.DialogFragment;
import com.google.android.material.bottomsheet.BottomSheetDialog;
public class Utils {
public static void showBottomSheetDialog(String _title, String _message, String _btn1msg, String _btn2msg, double _icID, boolean _cancelable, double _execID, final Context _ctx) {
final Context ctx = _ctx;
try{
final BottomSheetDialog bs_layout = new BottomSheetDialog(_ctx, R.style.BottomSheetLayoutTheme);
bs_layout.setContentView(R.layout.bottomsheet_error);
Button btn1 = (Button)
bs_layout.findViewById(R.id.button1);
ImageView imageview1 = (ImageView)
bs_layout.findViewById(R.id.imageview1);
bs_layout.getWindow().findViewById(R.id.design_bottom_sheet).setBackgroundResource(android.R.color.transparent);
bs_layout.setCancelable(_cancelable);
bs_layout.getWindow().setType(WindowManager.LayoutParams.TYPE_APPLICATION_PANEL);
bs_layout.show();
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View _view) {
SketchwareUtil.showMessage(ctx, "HAHAHA");
}
});
}catch (Exception _e){
SketchwareUtil.showMessage(ctx, _e.toString());
}
}
}
我做错了什么?我想要实现的是对我的所有活动使用相同的 BottomSheet Dialog 类,然后调用 Utils.showBottomSheet(string, string,context .. etc);
有人可以帮助我如何使它工作吗?只需导入该类,然后调用它以显示底部工作表对话框?谢谢。
图片错误:
I don't know how to embed the photo please click here for the screenshot of error
编辑:我调用 Utils.java 类的类
package com.my.newproject5;
import androidx.appcompat.app.AppCompatActivity;
import androidx.annotation.*;
import androidx.appcompat.widget.Toolbar;
import androidx.coordinatorlayout.widget.CoordinatorLayout;
import com.google.android.material.appbar.AppBarLayout;
import android.app.*;
import android.os.*;
import android.view.*;
import android.view.View.*;
import android.widget.*;
import android.content.*;
import android.content.res.*;
import android.graphics.*;
import android.graphics.drawable.*;
import android.media.*;
import android.net.*;
import android.text.*;
import android.text.style.*;
import android.util.*;
import android.webkit.*;
import android.animation.*;
import android.view.animation.*;
import java.io.*;
import java.util.*;
import java.util.regex.*;
import java.text.*;
import org.json.*;
import android.widget.Button;
import android.view.View;
import com.google.android.material.*;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.DialogFragment;
public class MainActivity extends AppCompatActivity {
private Toolbar _toolbar;
private AppBarLayout _app_bar;
private CoordinatorLayout _coordinator;
private String private_dir = "";
private Button button1;
@Override
protected void onCreate(Bundle _savedInstanceState) {
super.onCreate(_savedInstanceState);
setContentView(R.layout.main);
initialize(_savedInstanceState);
initializeLogic();
}
private void initialize(Bundle _savedInstanceState) {
_app_bar = findViewById(R.id._app_bar);
_coordinator = findViewById(R.id._coordinator);
_toolbar = findViewById(R.id._toolbar);
setSupportActionBar(_toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
_toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View _v) {
onBackPressed();
}
});
button1 = findViewById(R.id.button1);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View _view) {
Utils.showBottomSheetDialog("bleh", "waw", "ok", "ikr", 0, true, 9, getApplicationContext());
SketchwareUtil.showMessage(getApplicationContext(), "".substring((int)(0), (int)(0)));
}
});
}
private void initializeLogic() {
}
@Deprecated
public void showMessage(String _s) {
Toast.makeText(getApplicationContext(), _s, Toast.LENGTH_SHORT).show();
}
@Deprecated
public int getLocationX(View _v) {
int _location[] = new int[2];
_v.getLocationInWindow(_location);
return _location[0];
}
@Deprecated
public int getLocationY(View _v) {
int _location[] = new int[2];
_v.getLocationInWindow(_location);
return _location[1];
}
@Deprecated
public int getRandom(int _min, int _max) {
Random random = new Random();
return random.nextInt(_max - _min + 1) + _min;
}
@Deprecated
public ArrayList<Double> getCheckedItemPositionsToArray(ListView _list) {
ArrayList<Double> _result = new ArrayList<Double>();
SparseBooleanArray _arr = _list.getCheckedItemPositions();
for (int _iIdx = 0; _iIdx < _arr.size(); _iIdx++) {
if (_arr.valueAt(_iIdx))
_result.add((double)_arr.keyAt(_iIdx));
}
return _result;
}
@Deprecated
public float getDip(int _input) {
return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, _input, getResources().getDisplayMetrics());
}
@Deprecated
public int getDisplayWidthPixels() {
return getResources().getDisplayMetrics().widthPixels;
}
@Deprecated
public int getDisplayHeightPixels() {
return getResources().getDisplayMetrics().heightPixels;
}
}
【问题讨论】: