[英]Android Application not displaying on device as it does in Android Studio
我正在嘗試制作一個顯示以下圖像的程序:
該圖像來自Android Studio上的“顯示”窗口,用於我試圖顯示的活動的XML文件。 此窗口包含兩個片段,但其中只有一個片段現在具有可見元素。
但是,當在Android設備上運行程序時,我只得到一個空白屏幕,沒有任何可見的對象或功能,我一直在編程到片段中。 我仍然在頂部獲得活動的標題。
應該出現的是底部的兩個圖標(來自ToolbarFragment的兩個圖像按鈕)和一個由DrawingFragment中的畫布對象占據的空白區域。 我不知道如何繪制畫布,但至少按鈕應該出現。
我假設它與XML文件或活動本身有關,所以我在下面提供了它們的代碼。 我們將非常感謝您提供的任何幫助。
DrawingActivity.java
package com.example.chris.drawingtest;
import android.app.Activity;
import android.util.Log;
public class DrawingActivity extends Activity
implements ToolbarFragment.ToolSelectionListener {
public void sendNewValue(int newValue) {
Log.i("Data received from Toolbar Fragment: ", "The ID of the button pressed is " + newValue);
}
}
activity_drawing.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_gravity="bottom"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".com.example.chris.drawingtest.DrawingActivity">
<fragment
android:name="com.example.chris.drawingtest.DrawingFragment"
android:id="@+id/Drawing"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:layout="@layout/fragment_drawing"
/>
<fragment
android:name="com.example.chris.drawingtest.ToolbarFragment"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/Toolbar"
tools:layout="@layout/fragment_toolbar"
/>
</LinearLayout>
編輯:添加片段代碼。
ToolbarFragment.java
package com.example.chris.drawingtest;
import android.app.Activity;
import android.app.Fragment;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageButton;
import com.example.chris.drawingtest.R;
/**
* Created by Chris on 11/28/2014.
*/
public class ToolbarFragment extends Fragment {
ToolSelectionListener mCallback;
public interface ToolSelectionListener {
public void sendNewValue(int newValue);
}
public void clicked(ImageButton imageButton) {
mCallback.sendNewValue(imageButton.getId());
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_toolbar, container, false);
}
private ImageButton pencilButton = (ImageButton) getActivity().findViewById(R.id.pencil);
private ImageButton eraserButton = (ImageButton) getActivity().findViewById(R.id.eraser);
}
DrawingFragment.java
package com.example.chris.drawingtest;
import android.app.Activity;
import android.app.Fragment;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Path;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageButton;
import android.widget.LinearLayout;
import com.example.chris.drawingtest.R;
/**
* Created by Chris on 11/28/2014.
*/
public class DrawingFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_drawing, container, false);
}
private class DrawView extends View {
private Path drawpath = new Path();
private Paint drawpaint = new Paint();
private Paint canvaspaint;
private Canvas drawcanvas;
private Bitmap canvasBitmap;
private int paintColor = 0xFF000000; //opaque black for pencil
public DrawView(Context context) {
super(context);
drawpaint.setColor(paintColor);
drawpaint.setStrokeWidth(10);
drawpaint.setStyle(Paint.Style.STROKE);
drawpaint.setStrokeJoin(Paint.Join.ROUND);
drawpaint.setStrokeCap(Paint.Cap.ROUND);
canvaspaint = new Paint(Paint.DITHER_FLAG);
}
protected void OnSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w,h,oldw,oldh);
canvasBitmap = Bitmap.createBitmap(w,h,Bitmap.Config.ARGB_8888);
drawcanvas = new Canvas(canvasBitmap);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
drawcanvas.drawBitmap(canvasBitmap,0,0,drawpaint);
canvas.drawPath(drawpath, drawpaint);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
float touchX = event.getX();
float touchY = event.getY();
switch(event.getAction()) {
case MotionEvent.ACTION_DOWN:
drawpath.moveTo(touchX,touchY);
break;
case MotionEvent.ACTION_MOVE:
drawpath.lineTo(touchX,touchY);
break;
case MotionEvent.ACTION_UP:
drawcanvas.drawPath(drawpath, drawpaint);
drawpath.reset();
break;
default:
return false;
}
invalidate();
return true;
}
}
Integer value = 0;
}
我可能錯了,但是activity_drawing.xml是否應該附加到DrawingActivity.java? 看起來activity_drawing.xml沒有鏈接到任何東西。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_drawing);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.