如何从另一项活动到达底栏?

时间:2018-04-16 18:15:33

标签: java android

我尝试使用底部工作表,它使用活动的布局,而不是对话框。

[这是我的底页] [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");
        }
    });
}}

1 个答案:

答案 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),那么您应该在显示它的每个位置包含此代码,但最好是模块化。

祝你好运,快乐的编码!