我尝试使用底部工作表,它使用活动的布局,而不是对话框。
[这是我的底页] [1]
但我无法访问“立即付款”按钮。我试图在同一个活动中使用点击监听器,但没有任何反应。我怎么能听这个按钮在哪里?
底部活动
public class SheetActivity extends AppCompatActivity {
Button sheet_button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sheet);
sheet_button = (Button)findViewById(R.id.sheet_button);
//
sheet_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(getApplicationContext(), "Done!", Toast.LENGTH_SHORT).show();
sheet_button.setText("deneme");
}
});
}}
答案 0 :(得分:1)
这通常很简单。
如果底页是DialogFragment或BottomSheetDialogFrament,请将监听器添加到onAttach(Context context)
方法中,如下所示:
在片段中定义界面:
interface CheckoutButtonListener {
void onClick(/*provide whatever arguments you need to back to parent*/);
}
用法:
// Define the member variable
private CheckoutButtonListener mCheckoutListener;
@Override
public void onAttach(Context context){
super.onAttach(context);
try{
mCheckoutListener = (CheckoutButtonListener) context;
}catch(ClassCastException){
// Handle the error silently or rethrow so usage is expected
}
}
然后将监听器附加到按钮时:
mButton.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
mCheckoutListener.onClick(); // call the interface method
}
});
最后,在显示工作表的Activity中实现接口:
class MyActivity extends AppCompatActivity implements CheckoutButtonListener {
//.. other code
// interface method
@Override
public void onClick(){
// do whatever you need to do
}
}
如果您没有使用可重复使用的底页(即DialogFragment),那么您应该在显示它的每个位置包含此代码,但最好是模块化。
祝你好运,快乐的编码!