Я пытаюсь сделать то, что написано в заголовке, но по какой-то причине происходит сбой приложения, когда я нажимаю на кнопку.
Отображаемая ошибка:
java .lang.IllegalStateException: Не удалось найти метод show (View) в родительском или родительском контексте для android: атрибут onClick, определенный для класса представления android .widget.Button с идентификатором 'btn_1'
У меня есть MainActivity, которая содержит метод для открытия всплывающего окна с помощью кнопки (который, кажется, работает нормально, но я пишу его на всякий случай) и имеет вид:
publi c class MainActivity extends AppCompatActivity {
private PopupWindow popUpWindow;
private LayoutInflater layoutInflater;
private RelativeLayout relativeLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
relativeLayout = (RelativeLayout) findViewById(R.id.relative);
}
public void newWindowPopup(View view){
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int wide = dm.widthPixels;
int height = dm.heightPixels;
layoutInflater = (LayoutInflater) getApplicationContext().getSystemService(LAYOUT_INFLATER_SERVICE);
ViewGroup container = (ViewGroup) layoutInflater.inflate(R.layout.activity_popwindow, null);
popUpWindow = new PopupWindow(container, (int)(wide*.7), (int)(height*.25), true);
popUpWindow.setAnimationStyle(R.style.PopupAnimation);
popUpWindow.showAtLocation(relativeLayout, Gravity.CENTER, 0, 0);
container.setOnTouchListener(new View.OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event) {
popUpWindow.dismiss();
return true;
}
});
}
Макет для этого действия:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/relative"
android:background="#A85757"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<ScrollView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="30dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<GridLayout
android:layout_width="300dp"
android:layout_height="wrap_content"
android:columnCount="1">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/btnFrases"
android:layout_width="10dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:onClick="newWindowPopup"
android:text="Button 1"
android:textColor="#000000" />
</LinearLayout>
</GridLayout>
</ScrollView>
</RelativeLayout>
Код для открытия действия с помощью другой кнопки из созданного мною класса всплывающего окна, в котором, похоже, проблема :
publi c класс popwindow расширяет AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_popwindow);
Button p_button=findViewById(R.id.btn_1);
p_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent showActivity = new Intent(getApplicationContext(), Main2Activity.class);
startActivity(showActivity);
}
});
}
public void show(View view) {
Intent showActivity = new Intent(getApplicationContext(), Main2Activity.class);
startActivity(showActivity);
}
}
Макет для этого действия:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorPrimary">
<LinearLayout
android:layout_width="300dp"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:orientation="horizontal">
<Button
android:id="@+id/btn_1"
android:layout_width="10dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="EEEEE"
android:textColor="#000000" />
</LinearLayout>
</RelativeLayout>
Наконец, действие Я пытаюсь открыть из этого всплывающего окна ( У Main2Activity) пока нет кода, это просто пустое действие с TextView.
Методы View связаны с кнопками со свойством onClick, так что это не проблема. Большое спасибо, если вы можете помочь.