"R cannot be resolved to a variable " in android Activity - java

i was doing small android application , i added blank xml file but it was showing some error although i did not add any code and still it was showing error so i cleaned project but now after cleaning for my activity when i write
setContentView(R.layout.reminder_edit);
its giving errors like this R cannot be resolved to a variable ,
for another activity named ReminderListaActivity i tried this
setContentView(R.layout.reminder_edit)
error was for xml file not for "R " error was :reminder_edit cannot be resolved or is not a field .
xml file is in layout and its showing like never used file so how do i solve this issue , can someone help me with it pleae
EDIT code added
reminder_edit.xml
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:text="#string/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<EditText
android:id="#+id/title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="#string/body"
/>
<EditText
android:id="#+id/body"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:minLines="5"
android:scrollbars="vertical"
android:gravity="top" />
<TextView
android:text="#string/date"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<Button
android:id="#+id/reminder_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="#string/Reminder_Time"
/>
<TextView
android:text="#string/time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<Button
android:id="#+id/remindertime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="#string/remindertime"
/>
<Button
android:id="#+id/confirm"
android:text="#string/confirm"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
</ScrollView>
java File
public class ReminderEditActivity extends Activity {
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.reminder_edit);
}
}

Fix the errors in XML so the resource compiler can generate R.java for you.

Remove Import android.R; from imports in your activity class

In order to accesst "R.layout.edit_reminder" xml file you must import your "R" file which is found under the "gen" folder. This file is automatically generated, so you can go ahead and delete it and it will be generated again. Now, if you have any xml errores whatsoever the R file won't be generated, that's a sign that you have to look to your xml to find the problem.
In regards to the import, you'll find them on your Activity Class, at the very top right after the package declaration.
Make sure that the R you are importing is:
yourpackage.R;
rather tahn
android.R;
When writing code quickly at times android.R gets imported and you don't even notice. That's the first thing I always check, it's happened to me a couple of times already.
Next thing I would suggest doing is looking to see your console and problems view (if these are not set in your perspective, then go to Window>Show View>Other and select the appropriate ones).
Look for something along the lines of Error with xml file aborting build. Look for what xml file it is talking about, and then look for errors in it.

Related

How to integrate Stripe Payment in Android Java?

I need a Stripe Implementation for my Java Android App, but with a Server in Java, I don't know how to use node or php to implement that server-side and I found something on their docs:
https://stripe.com/docs/payments/accept-a-payment?integration=elements#android-create-payment-intent
but, the server-side is poorly explained.
All I've wrote until now is :
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="30dp"
app:layout_behavior="#string/appbar_scrolling_view_behavior"
tools:context=".Checkout">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<ImageView
android:layout_width="100dp"
android:layout_height="100dp"
android:src="#drawable/logo"
android:layout_gravity="center"
/>
<TextView
android:id="#+id/youhavetopay"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="22sp"
android:textColor="#color/colorPrimary"
android:fontFamily="#font/muli_black"
android:layout_gravity="center"
/>
<com.stripe.android.view.CardInputWidget
android:id="#+id/cardInputWidget"
android:layout_marginTop="30dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="#+id/payButton"
android:layout_gravity="center"
android:layout_marginTop="20dp"
/>
</LinearLayout>
</ScrollView>
and this
public class Checkout extends AppCompatActivity {
Button payBtn;
String message;
String price;
TextView text;
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_checkout);
payBtn = findViewById(R.id.payButton);
text = findViewById(R.id.youhavetopay);
Bundle extras = getIntent().getExtras();
if(extras != null) {
message = extras.getString("message");
price = extras.getString("passprice");
}
String t = "Pay $"+price;
payBtn.setText(t);
text.setText(message);
}
}
I have these implementations :
implementation "com.stripe:stripe-java:15.1.0"
implementation 'com.stripe:stripe-android:15.1.0'
implementation 'com.squareup.okhttp3:okhttp:4.4.0'
implementation 'com.google.code.gson:gson:2.8.6'
I really don't understand what I have to do from their docs. I only want a pay button that makes a payment from that card and if its accepted, do something on the database. A simple payment.
If you can guide me please, I would appreciate it! Any tutorials or advices are welcomed. I've tried to copy from the GitHub, but I saw many red lines from imports and I got lost.
Thank you in advance!
This sample includes both example Android client and a Java server implementations. You should be able to clone the repository and follow the appropriate READMEs to run those examples and see how this works. Follow along with the guide and if you have more specific questions please raise those.
You will need to be able to install and build android & java to run this, of course.

Jetpack databinding generated duplicate class in same file as same class

This morning I got an error where my app won't install and I have traced it down to this problem. I have two of the same class in the same file. I don't want to include the entire generated file as it is very long.
public class AddVinDialogFragmentBinding extends androidx.databinding.ViewDataBinding implements android.databinding.generated.callback.OnClickListener.Listener {
#Nullable
private static final androidx.databinding.ViewDataBinding.IncludedLayouts sIncludes;
#Nullable
private static final android.util.SparseIntArray sViewsWithIds;
:
#Nullable
private com.ui.EventHandler mHandler;
#Nullable
private final android.view.View.OnClickListener mCallback1;
public class AddVinDialogFragmentBinding extends androidx.databinding.ViewDataBinding implements android.databinding.generated.callback.OnClickListener.Listener {
#Nullable
private static final androidx.databinding.ViewDataBinding.IncludedLayouts sIncludes;
:
}
In gradle.properties I have this: android.databinding.enableV2=true
My layout is pretty simple:
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<data>
<variable
name="vin"
type="String" />
<variable name="handler" type="com.ui.garage.handlers.EventHandler" />
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.ui.AddVinDialogFragment">
<TextView
android:layout_width="wrap_content"
android:text="Please enter a VIN"
android:layout_height="wrap_content" />
<com.google.android.material.textfield.TextInputLayout
android:id="#+id/add_vin_field"
android:layout_width="200dp"
android:maxLength="17"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="10dp">
<EditText
android:layout_width="match_parent"
android:layout_height="match_parent"
android:hint="#string/vin"
android:text="#={vin}" />
</com.google.android.material.textfield.TextInputLayout>
<Button
android:id="#+id/button"
android:onClick="#{() -> handler.addVin(vin)}"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="#string/submit" />
</LinearLayout>
</layout>
I am using Android Studio 3.3 Canary 3
Sometimes I get that there is a duplicate class in my layout file and then it can't find the DataBindingComponent. What is annoying is that this worked yesterday and I haven't changed the binding since then.
Any suggestions as to what may be the issue?
I have deleted .gradle and mobile/build/* and did a clean and rebuild multiple times, as well as exiting and restarting Android Studio.
I have three layout files with databinding and all three have the same errors.
Delete the compiler dependency, it is provided with binding plugin from 3.2.0. At least it worked for me.
kapt "com.android.databinding:compiler:$gradleVersion

execution failed for task ':app:mergeDebugResources' android studio 1.4.1

I made projects in Eclipse with ADK, but today i have installed Android Studio, created my first project HelloWorld and faced with problem: I added one ImageView, if I set beckgroung (or src) with any system resources - all right, but when I set my box.png file I get errors:
1. execution failed for task ':app:mergeDebugResources'
2. no resource found that matches the given name (at 'background' with value '#drawable)
I tried all the options of the website https://stackoverflow.com/ and others with same problems, but I didn't solve my problem yet.
Please, help me !
<?xml version="1.0" encoding="utf-8"?>
<TextView android:text="Hello World!" android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="#string/app_name"
android:id="#+id/imageView"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:background="#drawable/box" />

How to Create Text Link in Pure XML Without setMovementMethod()?

I want to link to an out-of-app resource on Android with pure HTML in XML without having to call setMovementMethod. Setting:
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="#string/the_message"
android:autoLink="web"
android:linksClickable="true" />
Does not work. Help?

findViewById Returns An Error

findViewById gives out an error, I think it's because it's returning null. My app is forced to close.
SensorManager sensorManager=null;
TextView x= null;
TextView y= null;
TextView z= null;
/** Called when the activity is first created. */
#Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
setContentView(R.layout.main);
x= (TextView) findViewById(R.id.tv1);
y= (TextView) findViewById(R.id.tv2);
z= (TextView) findViewById(R.id.tv3);
}
XML:
<TextView
android:id="#+id/tv1"
android:layout_x="10px"
android:layout_y="550px"
android:text="#string/x"
/>
<TextView
android:id="#+id/tv2"
android:layout_x="100px"
android:layout_y="550px"
android:text="#string/y"
/>
<TextView
android:id="#+id/tv3"
android:layout_x="200px"
android:layout_y="550px"
android:text="#string/z"
/>
Can someone please tell me what I'm doing wrong?
SOLVED!
I used the XML given by Sunny at the bottom! Thank you to all!
That's simple.... tv* is not in your layout!
Please post the layout, I am 100% sure it doesn't contain:
<TextView android:id="#+id/tv1"/>
<TextView android:id="#+id/tv2"/>
<TextView android:id="#+id/tv3"/>
Please also learn how to get a logcat before going further in android development! ;-)
Window -> Show View -> Logcat
yes above code working fine and xml file should be like this.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:id="#+id/tv1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"></TextView>
<TextView
android:id="#+id/tv2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"></TextView>
<TextView>
android:id="#+id/tv3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"></TextView>
</LinearLayout>
yes that problem and if with xml is not done then
You import android.R;
so that it will give error if xml you have
remove that
and import PACKAGENAME.R;
First : Verify that your TextView Are present on your layout : main.xml :
<TextView android:id="#+id/tv1" .../>
<TextView android:id="#+id/tv2" .../>
<TextView android:id="#+id/tv3" .../>
Second : reBuild your project by following this steps : Project ==> Clean ==> Select your project and click OK .
The reason why this happens is :
findViewById() will search for the TextViews in the View hierarchy established by setContentView(R.layout.main). So if the TextViews aren't in main.xml you will get a null

Categories