2016-12-29 3 views
0

Я создал функцию для обработки USSD запрос, как показано нижеAndroid USSD код

public class MainActivity extends AppCompatActivity 
     implements NavigationView.OnNavigationItemSelectedListener { 
    private static final int RQS_PICK_CONTACT = 1; 
    private static final String EXTRA_MESSAGE = "ethio"; 
    private static final String TAG = " " ; 
    Button buttonPickContact; 
    /** 
    * ATTENTION: This was auto-generated to implement the App Indexing API. 
    * See https://g.co/AppIndexing/AndroidStudio for more information. 
    */ 
    private GoogleApiClient client; 

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

     Button yanos = (Button) findViewById(R.id.yanos); 
     TextView checkbalance = (TextView) findViewById(R.id.checkbalance); 
     checkbalance.setClickable(true); 





     if (yanos != null) { 
      yanos.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        Uri uri = Uri.parse("http://www.yanosplc.com"); 
        Intent intent = new Intent(Intent.ACTION_VIEW, uri); 
        startActivity(intent); 
       } 
      }); 
     } 


     final TextView pnumber = (TextView) findViewById(R.id.pnumber); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 
     Button checkb = (Button) findViewById(R.id.checkb); 
     final Button rebal = (Button) findViewById(R.id.rebal); 
     final Button transfer = (Button) findViewById(R.id.transfer); 
     final Button callme = (Button) findViewById(R.id.callme); 
     //final Button forme = (Button) findViewById(R.id.forme); 
     //final Button foru = (Button) findViewById(R.id.foru); 


     buttonPickContact = (Button) findViewById(R.id.pickcontact); 
     buttonPickContact.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 
       intent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE); 
       startActivityForResult(intent, 1); 

      } 
     }); 


     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
       this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); 
     drawer.setDrawerListener(toggle); 
     toggle.syncState(); 

     NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
     navigationView.setNavigationItemSelectedListener(this); 
     // ATTENTION: This was auto-generated to implement the App Indexing API. 
     // See https://g.co/AppIndexing/AndroidStudio for more information. 
     client = new GoogleApiClient.Builder(this).addApi(AppIndex.API).build(); 
    } 
    public void checkbalance(){ 

     String ussd = "*804" + Uri.encode("#"); 
     if (ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) { 
      // TODO: Consider calling 
      // ActivityCompat#requestPermissions 
      // here to request the missing permissions, and then overriding 
      // public void onRequestPermissionsResult(int requestCode, String[] permissions, 
      //           int[] grantResults) 
      // to handle the case where the user grants the permission. See the documentation 
      // for ActivityCompat#requestPermissions for more details. 
      return; 
     } 
     startActivity(new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + ussd))); 

    } 

И мой XML макет TextView выглядит следующим образом

<TextView 
     android:layout_width="150dp" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:drawableTop="@drawable/check" 
     android:text="Check Balance" 
     android:id="@+id/checkbalance" 
     android:layout_row="0" 
     android:layout_column="0" 
     android:onClick="checkbalance" 
     android:textSize="22dp" /> 

LogCat

java.lang.IllegalStateException: Could not find method checkbalance(View) in a parent or ancestor Context for android:onClick attribute defined on view class 
    android.support.v7.widget.AppCompatTextView with id 'checkbalance' at 
    android.support.v7.app.AppCompatViewInflater$DeclaredOnClick‌​Listener.resolveMeth‌​od(AppCompatViewInfl‌​ater.java:321) at 
    android.support.v7.app.AppCompatViewInflater$DeclaredOnClick‌​Listener.onClick(App‌​CompatViewInflater.j‌​ava:280) at android.view.View.performClick(View.java:5198)at android.view.View$PerformClick.run(View.java:21147) at 
    android.os.Handler.handleCallback(Handler.java:739) at 
    android.os.Handler.dispatchMessage(Handler.java:95) at 
    android.os.Looper.loop(Looper.java:148) at 
    android.app.ActivityThread.main(ActivityThread.java:5417) at java.lang.reflect.Method.invoke(Native Method) at 
    com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(Z‌​ygoteInit.java:726) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 

но когда когда-либо я нажимаю на текст, приложение сбой. Кто-нибудь может мне помочь. Спасибо

+0

свои контактные данные краш LogCat и наверняка кто-то поможет –

+0

у вас есть вопрос с вашим java-кодом 'checkbalance', поэтому напишите java-код и переместите ваши данные журнала в свой пост и удалите комментарии –

+0

Да, не могу ли я назначить функцию текстовому событию onClick – Beimnet

ответ

0

вы должны сначала объявить вид текста, то вы установите его интерактивными, это может быть сделано в методе OnCreate

TextView checkbalanceText = (TextView)findViewById(R.id.checkbalance); 
checkbalanceText.setClickable(true); 

после этого ваш checkbalance (View вид) функция будет работать

+0

Это не исправит исключение 'java.lang.IllegalStateException: Не удалось найти метод checkbalance (View)' – Tim

1

Используйте

public void checkbalance(View v){

вместо этого

public void checkbalance(){

потому что, согласно конвенции, метод должен иметь параметр View, который представляет ваш щелкнул вид, который в данном случае является ваш TextView

Смежные вопросы