Android app not showing on device like in Android Studio

I am trying to create a program that displays the following image:

Desired appearance of application

This image comes from the Display window in Android Studio for the XML file for the activity I am trying to display. This window includes two fragments, although only one of them has visible elements right now.

However, when I run the program on an Android device, I get a blank screen with no visible objects or functionality that I was programming into fragments. I am still getting the activity title at the top though.

What should appear are the two icons at the bottom (which represent the two image buttons from the ToolbarFragment) and an empty space that will be used by the canvas object from the DrawingFragment. I'm not sure how to draw the canvas, but at least the buttons should appear.

I am assuming it has something to do with the XML files or the activity itself, so I have provided the code for them below. Any help you can give would be greatly appreciated.

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>

      

EDIT: Added snippet code.

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;

}

      

+3


source to share


1 answer


I may be wrong, but if the action_drawing.xml is not tied to DrawingActivity.java? It looks like activity_drawing.xml is not associated with anything.



protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_drawing);

}

      

+1


source







All Articles