簡體   English   中英

下一個活動不是從片段活動類的按鈕單擊開始的

[英]next activity is not starting on button click from a fragment activity class

我在按鈕單擊時調用Activity ,但未打開,我在按鈕上設置了onClickListener ,並從Intent調用也在android清單中設置了它,但仍無法正常工作。 請調查這個
這里是我的PDFRenderFragment

編輯代碼
PDFRenderFragment.java包com.blogspot.hongthaiit.pdfrender;

import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.pdf.PdfRenderer;
import android.os.Bundle;
import android.os.ParcelFileDescriptor;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;

import java.io.IOException;


public class PDFRenderFragment extends Fragment {

    private ParcelFileDescriptor fileDescriptor;
    private PdfRenderer pdfRenderer;
    private PdfRenderer.Page currentPage;
    private ImageView image;
    private Button btnPrevious;
    private Button btnNext;
    private Button searchPaper;
    private EditText paperName;

    public PDFRenderFragment() {

    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment_pdfrender, container, false);
    }

    @Override
    public void onViewCreated(View view, Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        // Retain view references.
        image = (ImageView) view.findViewById(R.id.image);
        btnPrevious = (Button) view.findViewById(R.id.btn_previous);
        btnNext = (Button) view.findViewById(R.id.btn_next);
        searchPaper = (Button) view.findViewById(R.id.searchPaper);
        paperName =(EditText) view.findViewById(R.id.paperName);

        //set buttons event
        btnPrevious.setOnClickListener(onActionListener(-1)); //previous button clicked
        btnNext.setOnClickListener(onActionListener(1)); //next button clicked
        searchPaper.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(getActivity(), ShowWebView.class);
                intent.putExtra("PAPERNAME", paperName.toString());
                startActivity(intent);
            }
        });

        int index = 0;
        // If there is a savedInstanceState (screen orientations, etc.), we restore the page index.
        if (null != savedInstanceState) {
            index = savedInstanceState.getInt("current_page", 0);
        }
        showPage(index);



    }

    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        try {
            openRenderer(activity);
        } catch (IOException e) {
            e.printStackTrace();
            Log.i("Fragment", "Error occurred!");
            Log.e("Fragment", e.getMessage());
            activity.finish();
        }
    }

    @Override
    public void onDestroy() {
        try {
            closeRenderer();
        } catch (IOException e) {
            e.printStackTrace();
        }
        super.onDestroy();
    }

    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        if (null != currentPage) {
            outState.putInt("current_page", currentPage.getIndex());
        }
    }

    /**
     * Create a PDF renderer
     * @param activity
     * @throws IOException
     */
    private void openRenderer(Activity activity) throws IOException {
        // Reading a PDF file from the assets directory.
        fileDescriptor = activity.getAssets().openFd("resume.pdf").getParcelFileDescriptor();

        // This is the PdfRenderer we use to render the PDF.
        pdfRenderer = new PdfRenderer(fileDescriptor);
    }

    /**
     * Closes PdfRenderer and related resources.
     */
    private void closeRenderer() throws IOException {
        if (null != currentPage) {
            currentPage.close();
        }
        pdfRenderer.close();
        fileDescriptor.close();
    }

    /**
     * Shows the specified page of PDF file to screen
     * @param index The page index.
     */
    private void showPage(int index) {
        if (pdfRenderer.getPageCount() <= index) {
            return;
        }
        // Make sure to close the current page before opening another one.
        if (null != currentPage) {
            currentPage.close();
        }
        //open a specific page in PDF file
        currentPage = pdfRenderer.openPage(index);
        // Important: the destination bitmap must be ARGB (not RGB).
        Bitmap bitmap = Bitmap.createBitmap(currentPage.getWidth(), currentPage.getHeight(),
                Bitmap.Config.ARGB_8888);
        // Here, we render the page onto the Bitmap.
        currentPage.render(bitmap, null, null, PdfRenderer.Page.RENDER_MODE_FOR_DISPLAY);
        // showing bitmap to an imageview
        image.setImageBitmap(bitmap);
        updateUIData();
    }

    /**
     * Updates the state of 2 control buttons in response to the current page index.
     */
    private void updateUIData() {
        int index = currentPage.getIndex();
        int pageCount = pdfRenderer.getPageCount();
        btnPrevious.setEnabled(0 != index);
        btnNext.setEnabled(index + 1 < pageCount);
        //getActivity().setTitle(getString(R.string.app_name, index + 1, pageCount));
    }

    private View.OnClickListener onActionListener(final int i) {
        return new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                if (i < 0) {//go to previous page
                    showPage(currentPage.getIndex() - 1);
                } else {
                    showPage(currentPage.getIndex() + 1);
                }
            }
        };
    }


}

這是清單文件

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.blogspot.hongthaiit.pdfrender">
    <uses-permission android:name="android.permission.INTERNET"/>
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme">
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".ShowWebView"></activity>
    </application>

</manifest>

這是第二堂課 ,我想在單擊按鈕時打開

package com.blogspot.hongthaiit.pdfrender;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.EditText;

public class ShowWebView extends Activity {
    WebView browser;
    Button searchPaper;
    EditText paperName;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_show_web_view);
        Intent intent = getIntent();
        final String PAPERNAME = intent.getStringExtra("PAPERNAME");
        //search for paper
        /*searchPaper = (Button) findViewById(R.id.searchPaper);
        paperName = (EditText) findViewById(R.id.paperName);

        browser = (WebView) findViewById(R.id.webview);
        browser.setWebViewClient(new MyBrowser());

        searchPaper.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String url = PAPERNAME;

                browser.getSettings().setLoadsImagesAutomatically(true);
                browser.getSettings().setJavaScriptEnabled(true);
                browser.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
                browser.loadUrl(url);
            }
        });*/
        browser.getSettings().setLoadsImagesAutomatically(true);
        browser.getSettings().setJavaScriptEnabled(true);
        browser.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
        browser.loadUrl(PAPERNAME);
    }
    /*private class MyBrowser extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }
    }*/


}

請幫我解決這個問題。

您遇到什么錯誤? 粘貼您的logcat。 您的代碼

searchPaper.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent intent = new Intent(getActivity(), ShowWebView.class);
                    intent.putExtra("PAPERNAME", paperName.toString());
                    startActivity(intent);
                }
            });  

足以打開新活動。 您為什么使用這種和平的代碼....

searchPaper.setOnClickListener(new View.OnClickListener() {

             @Override
           public void onClick(View v) {

                            }
                          }
                       );

似乎這造成了問題。 選中此選項或粘貼您的logcat。

您為searchPaper按鈕設置了兩次onclickListener,第二個為空

嘗試設置標志Intent.FLAG_ACTIVITY_NEW_TASK

根據您的意圖。

//set OnclickListner on button searchpaper
        searchPaper.setOnClickListener(new View.OnClickListener() {
                                           @Override
                                           public void onClick(View v) {

                                           }
                                       }
        );

請檢查上面的代碼。 在OnClickListener()中,沒有代碼。 因此,它將覆蓋您先前編寫的代碼以重定向活動的ClickListener操作。 請刪除此代碼。

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_pdfrender, container, false);

    //Write your code here,such as OnClickListener
    Button searchPaper = (Button) view.findViewById(R.id.searchPaper);
    searchPaper.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            click(v);
        }
    });

    return view;
}

public void click(View v) {
    EditText paperName = (EditText) view.findViewById(R.id.paperName);
    Intent intent = new Intent(getActivity(), ShowWebView.class);
    intent.putExtra("PAPERNAME", paperName.toString());
    startActivity(intent);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM