2

単純なTextViewがクリックされたときにブラウザでリンクを開くようにしようとしています。

XML:

    <TextView
        android:text="@string/account_sign_up_link"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/sign_up_link"
        android:autoLink="web"
        android:onClick="signUpLink"
        android:clickable="true" />

Java:

    public class signUpLink extends Activity {
        public void onClick(View v) {
            ...
        }
    }



Eclipseがこのエラーをスローし続ける理由がわかりません。

エラー:

Illegal modifier for the local class signUpLink; only abstract or final is permitted



アップデート:

私の最初の問題はそれが入っていたprotected void onCreate(Bundle savedInstanceState)のでそこから取り出したということでした。

最終的に私はこれを思いついた:

public void signUpLink(View v){
    Uri uriUrl = Uri.parse("http://mysite.com/signup"); 
    Intent launchBrowser = new Intent(Intent.ACTION_VIEW, uriUrl);
    startActivity(launchBrowser);
}
4

5 に答える 5

2

voidは、変数signUpLinkの無効なタイプです

メソッド宣言は、クラス定義で行う必要があります。別のメソッド内でメソッドを宣言しようとすると、これと同様のエラーが報告されます。

public class SignUpLink extends Activity {

    public void onCreate(Bundle bundle) {
           ...

    }
    public void signUpLink(View v) {
        //....Code here
    }
}

クラスの命名規則に従います。

于 2013-03-12T05:34:03.237 に答える
0

変化する:

public class signUpLink extends Activity {
    public void onClick(View v) {
        ...
    }
}

に:

public void signUpLink(View v) {
    //Code from onClick(View v) goes here
}

このメソッドは、XMLレイアウトを使用しているActivityクラスに入る必要があります。XML属性として指定すると、Androidは、レイアウトが拡張されたアクティビティの引数としてonClickをとるその名前のメソッドを探します。View

以前は、新しいメソッドではなく、新しいクラスを作成していました。

于 2013-03-12T05:28:40.677 に答える
0

Html.fromHtmlを使用します

   Text1.setText(
        Html.fromHtml(
            "<a href=\"http://www.google.com\">Google</a> "));
    Text1.setMovementMethod(LinkMovementMethod.getInstance());
于 2013-03-12T05:44:01.630 に答える
0

このスニペットを使用する

    TextView url = ((TextView)findViewById(R.id.myWebSite));
    Linkify.addLinks(url, Linkify.WEB_URLS);

これは私にとってはうまくいきました。マニフェストファイルでインターネット許可を定義することを忘れないでください。

于 2013-03-12T05:47:46.043 に答える
0

xmlレイアウトではTextView'のonClickアクションが" signUpLink、"として指定されているため、Activityそのコンテンツビューがxmlファイルであるのと同じように、次のようにそのメソッドを実装する必要があります。

public class MyActivity extends Activity {
    @Override
    public void onCreate(final Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.your_layout_file);
    }

    public void signUpLink(final View view) {
        // Do signup action
    }
}

または、このレイアウトをで使用しFragment、ロジックをFragmentそれ自体にカプセル化したままにする場合は、次のようなことを行う必要があります。

public class MyFragment extends Fragment {
    @Override
    public View onCreateView(final LayoutInflater inflater, final ViewGroup parent, final Bundle icicle) {
        final View view = inflater.inflate(R.layout.your_layout_file, parent, false);
        view.findViewById(R.id.sign_up_link).setOnClickListener(new View.OnClickListener() {
            @Override
            void onClick(View v) {
                /*MyFragment.this.*/signUpLink(v);
            }
        });
        return view;
    }

    private void signUpLink(final View view) {
        // Do signup action
    }
}
于 2013-03-12T06:05:23.593 に答える