5

私はAndroid開発の初心者であり、ユーザーがTextViewに表示されているテキスト(TextViewはアセットからインポートしたコード39バーコードフォントテキストを表示しています)を押した後にビットマップに変換できるプログラムを開発しようとしています。 「ビットマップに変換してください!」ボタン。私はグーグルで検索しようとしましたが、コードを入力する場所のガイドなしで文字列をビットマップに変換するなどの答えを得ることができただけなので、それについてはかなり混乱しています。グーグルした後に入力しようとしたコードでプログラムを実行しようとしましたが、変換ボタンを押すたびにクラッシュします。

あなたが助けることができることを本当に願っています!前もって感謝します!:D

これまでの私のコードは次のとおりです。-

*サイモンのコードに関して編集

Javaで:

public class MainActivity extends Activity 
implements OnClickListener {
    //Called when activity is first created

    TextView tv1;
    ImageView iv;
    Button b;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        TextView tv1 = (TextView) findViewById(R.id.txtV);  
        tv1.setDrawingCacheEnabled(true); 

        //To change to code 39 barCode font
        Typeface barcodefont = Typeface.createFromAsset(getAssets(),                 
                "fonts/IDAutomationHC39M_FREE.otf");         
        TextView tv = (TextView) findViewById(R.id.txtV);         
        tv.setTypeface(barcodefont);
    }

    public void onClick(View v) {

        tv1.buildDrawingCache(); 
        iv.setImageBitmap(tv1.getDrawingCache()); 
    } 

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
}

Logcatエラー:

10-04 06:33:25.076: E/AndroidRuntime(1423): FATAL EXCEPTION: main
10-04 06:33:25.076: E/AndroidRuntime(1423): java.lang.IllegalStateException: Could not find a method ConvertText(View) in the activity class com.example.txtvbitmapconverter.MainActivity for onClick handler on view class android.widget.Button with id 'btnConvert'
10-04 06:33:25.076: E/AndroidRuntime(1423):     at android.view.View$1.onClick(View.java:3578)
10-04 06:33:25.076: E/AndroidRuntime(1423):     at android.view.View.performClick(View.java:4084)
10-04 06:33:25.076: E/AndroidRuntime(1423):     at android.view.View$PerformClick.run(View.java:16966)
10-04 06:33:25.076: E/AndroidRuntime(1423):     at android.os.Handler.handleCallback(Handler.java:615)
10-04 06:33:25.076: E/AndroidRuntime(1423):     at android.os.Handler.dispatchMessage(Handler.java:92)
10-04 06:33:25.076: E/AndroidRuntime(1423):     at android.os.Looper.loop(Looper.java:137)
10-04 06:33:25.076: E/AndroidRuntime(1423):     at android.app.ActivityThread.main(ActivityThread.java:4745)
10-04 06:33:25.076: E/AndroidRuntime(1423):     at java.lang.reflect.Method.invokeNative(Native Method)
10-04 06:33:25.076: E/AndroidRuntime(1423):     at java.lang.reflect.Method.invoke(Method.java:511)
10-04 06:33:25.076: E/AndroidRuntime(1423):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
10-04 06:33:25.076: E/AndroidRuntime(1423):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
10-04 06:33:25.076: E/AndroidRuntime(1423):     at dalvik.system.NativeStart.main(Native Method)
10-04 06:33:25.076: E/AndroidRuntime(1423): Caused by: java.lang.NoSuchMethodException: ConvertText [class android.view.View]
10-04 06:33:25.076: E/AndroidRuntime(1423):     at java.lang.Class.getConstructorOrMethod(Class.java:460)
10-04 06:33:25.076: E/AndroidRuntime(1423):     at java.lang.Class.getMethod(Class.java:915)
10-04 06:33:25.076: E/AndroidRuntime(1423):     at android.view.View$1.onClick(View.java:3571)
10-04 06:33:25.076: E/AndroidRuntime(1423):     ... 11 more
4

2 に答える 2

11

これを試して

onCreate()に追加します

tv1.setDrawingCacheEnabled(true);

次に、onClick()で

tv1.buildDrawingCache();
iv.setImageBitmap(tv1.getDrawingCache());

http://developer.android.com/reference/android/view/View.html#buildDrawingCache(boolean)

http://developer.android.com/reference/android/view/View.html#getDrawingCache(boolean)

[編集]

現在の問題は、tv1が存在する前に描画キャッシュを有効にしようとしていることです。

これを行う必要があります:

TextView tv1 = (TextView) findViewById(R.id.txtV); 
tv1.setDrawingCacheEnabled(true);
于 2012-10-03T06:36:14.700 に答える
0

onCreate()の行:

TextView tv1 = (TextView) findViewById(R.id.txtV);

する必要があります

tv1 = (TextView) findViewById(R.id.txtV);
于 2020-05-14T18:01:01.630 に答える