我的问题很简单,但我似乎无法做我想做的事。
所以在我的活动中,我有这种方法。
public void performButtonClick(View view)
{
Log.i("INTRO", "OK");
}
从xml中定义的按钮单击事件调用,如此
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="performButtonClick"
android:text="@string/start"/>
现在我听说这种方法使用反射降低了性能,所以我试图用数据绑定替换onClick
事件。
我尝试了各种组合,比如
android:onClick="@{performButtonClick}"
或
android:onClick="@{(v) -> performButtonClick(v)}"
或
android:onClick="@{(v) -> MainActivity::performButtonClick}"
但这些都没有奏效 你能救我一下吗?
答案 0 :(得分:0)
好的回答我自己的问题。
我是DataBinding的新手,但我不明白为什么我必须使用复制粘贴的解决方案,这些解决方案使用了附件android:onClick="performButtonClick"
类,最终得到了比以前更多的样板代码。
我想要的只相当于<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<variable
name="activity"
type="com.example.mydatabinding.MainActivity"/>
</data>
<LinearLayout
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/bg"
android:orientation="vertical">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="@{activity::performButtonClick}"
android:text="@string/start"/>
</LinearLayout>
所以这是我的解决方案:
activity_main.xml中
public final class MainActivity extends AppCompatActivity
{
ActivityMainBinding binding;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
binding.setActivity(this);
}
public void performButtonClick(View view)
{
Log.i("INTRO", "OK");
}
}
MainActivity.java
<?php
session_start();
$target_dir = "uploads/";
$filename = $_FILES['file']['name'];
$filePath = $_FILES['file']['tmp_name'];
$types = array('image/jpeg');
if (in_array($_FILES['file']['type'], $types)) {
$exif = exif_read_data($_FILES['file']['tmp_name']);
if (!empty($exif['Orientation'])) {
$imageResource = imagecreatefromjpeg($filePath); // provided that the image is jpeg. Use relevant function otherwise
switch ($exif['Orientation']) {
case 3:
$image = imagerotate($imageResource, 180, 0);
break;
case 6:
$image = imagerotate($imageResource, -90, 0);
break;
case 8:
$image = imagerotate($imageResource, 90, 0);
break;
default:
$image = $imageResource;
}
}
imagejpeg($image, 'uploads/'.$filename, 100);
$_SESSION["image"] = $filename;
header("Location: http://perfectprints.org.uk/tool.php");
} else {
if (move_uploaded_file($_FILES['file']['tmp_name'], "uploads/". $_FILES["file"]['name'])) {
$_SESSION["image"] = $filename;
header("Location: http://perfectprints.org.uk/tool.php");
}
}
?>