按钮不适用于真正的手机,但适用于Android工作室模拟器

时间:2017-05-03 01:24:42

标签: android android-emulator apk

使用Build->构建APK,我尝试将我的应用安装到手机中。一切正常,包括模拟器上的按钮。

然而,当我尝试在手机上使用它时,按下按钮会使我的手机崩溃。浮动操作按钮有效,但不起作用

我试着注释掉链接到按钮的startActivity函数,但它仍然崩溃。 任何可能的原因?

很抱歉,如果它有点模糊,但我不确定问题的根源是什么。

我尝试将backToMainScreen方法设置为空,但应用程序仍然崩溃,因此我认为这不是java代码的问题。

导致问题的一个页面

public class AddExercise extends AppCompatActivity {

private ArrayList<Exercise> exList;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.add_exercise);
    exList =  MainActivity.loadData();
}

void backToMainScreen(View target){
    Intent myIntent = new Intent(getApplicationContext(),    MainActivity.class);
    MainActivity.saveData(exList);

    startActivity(myIntent);
    finish();
}

void addExercise(View target){

    EditText etNewEntry = (EditText) findViewById(R.id.newEntry);
    String newEntry = etNewEntry.getText().toString();
    if (!newEntry.isEmpty()) {
        Exercise newExercise = new Exercise(newEntry);
        exList.add(newExercise);
    }

    backToMainScreen(target);

}


}

以下是该页面的XML代码

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/popupWindow">

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="@string/exInput"
    android:layout_above="@+id/newEntry"
    android:gravity="center"/>

<EditText
    android:layout_width="200sp"
    android:layout_height="wrap_content"
    android:id="@+id/newEntry"

    android:layout_above="@+id/buttons"
    android:layout_alignLeft="@+id/buttons"
    android:layout_alignStart="@+id/buttons"
   android:inputType="textAutoComplete"/>
<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/buttons"
    android:layout_centerInParent="true"
    android:orientation="horizontal">
    <Button
        android:layout_width="100sp"
        android:layout_height="wrap_content"
        android:id="@+id/ok"
        android:text="@string/ok"
        android:onClick="addExercise"
        />
    <Button
        android:layout_width="100sp"
        android:layout_height="wrap_content"
        android:id="@+id/cancel"
        android:text="@string/cancel"
        android:onClick="backToMainScreen"
        />

</LinearLayout>


</RelativeLayout>

2 个答案:

答案 0 :(得分:0)

要使public正常工作,您的目标函数应为public void backToMainScreen(View target){} public void addExercise(View target){}

df

答案 1 :(得分:0)

为了使其正常工作,该方法必须是公共的,并接受View作为其唯一参数。 请在代码中公开您的方法,以便单击按钮。

阅读文档 https://developer.android.com/reference/android/widget/Button.html